IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

gorm系列-删除

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

目录

  • Gorm删除
    • 删除记录
    • 批量删除
    • 软删除
    • 物理删除
    • 不使用软删除

Gorm删除

软删除

删除记录

警告 删除记录时,请确保主键字段有值,GORM 会通过主键去删除记录,如果主键为空,GORM 会删除该 model 的所有记录。

// 删除现有记录
db.Delete(&email)
//// DELETE from emails where id=10;

// 为删除 SQL 添加额外的 SQL 操作
db.Set("gorm:delete_option", "OPTION (OPTIMIZE FOR UNKNOWN)").Delete(&email)
//// DELETE from emails where id=10 OPTION (OPTIMIZE FOR UNKNOWN);

package main

import (
   "github.com/jinzhu/gorm"
   _ "github.com/jinzhu/gorm/dialects/mysql"
)

//1. 定义模型
type User struct {
   gorm.Model
   Name string
   Age byte
   Active bool
}

func main() {
   //2. 连接Mysql数据库
   db, err := gorm.Open("mysql","root:123456@tcp(127.0.0.1:3306)/db?charset=utf8mb4&parseTime=True&loc=Local")
   if err != nil {
      panic(err)
   }
   defer db.Close()
   //3. 把模型与数据库中的表对应起来
   db.AutoMigrate(&User{})
   //4. 删除
   var u User
   u.ID = 1
   db.Debug().Delete(u)
   //[2020-04-27 16:35:12]  [20.97ms]  UPDATE `users` SET `deleted_at`='2020-04-27 16:35:12'  WHERE `users`.`deleted_at` IS NULL AND `users`.`id` = 1  
   //[1 rows affected or returned ] 
}

95_1.png

func main() {
   //2. 连接Mysql数据库
   db, err := gorm.Open("mysql","root:123456@tcp(127.0.0.1:3306)/db?charset=utf8mb4&parseTime=True&loc=Local")
   if err != nil {
      panic(err)
   }
   defer db.Close()
   //3. 把模型与数据库中的表对应起来
   db.AutoMigrate(&User{})
   //4. 删除
   var u User
   u.Name = "yike"
   db.Debug().Delete(u)
   //[2020-04-27 16:38:07]  [20.97ms]  UPDATE `users` SET `deleted_at`='2020-04-27 16:38:07'  WHERE `users`.`deleted_at` IS NULL  
   //[1 rows affected or returned ] 
}

95_2.png

批量删除

95_3.png
删除全部匹配的记录

db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})
//// DELETE from emails where email LIKE "%jinzhu%";

db.Delete(Email{}, "email LIKE ?", "%jinzhu%")
//// DELETE from emails where email LIKE "%jinzhu%";

////4. 删除
//var u User
//u.Name = "yike"
//db.Debug().Delete(u)
db.Debug().Where("name=?","zisefeizhu").Delete(User{})
//db.Debug().Delete("age = ?", 21)

95_4.png

软删除

如果一个 model 有 DeletedAt 字段,他将自动获得软删除的功能! 当调用 Delete 方法时, 记录不会真正的从数据库中被删除, 只会将DeletedAt 字段的值会被设置为当前时间

db.Delete(&user)
//// UPDATE users SET deleted_at="2013-10-29 10:23" WHERE id = 111;

// 批量删除
db.Where("age = ?", 20).Delete(&User{})
//// UPDATE users SET deleted_at="2013-10-29 10:23" WHERE age = 20;

// 查询记录时会忽略被软删除的记录
db.Where("age = 20").Find(&user)
//// SELECT * FROM users WHERE age = 20 AND deleted_at IS NULL;

// Unscoped 方法可以查询被软删除的记录
db.Unscoped().Where("age = 20").Find(&users)
//// SELECT * FROM users WHERE age = 20;

var u1 []User
db.Debug().Unscoped().Where("name = ?","yike").Find(&u1)
//[2020-04-27 16:49:05]  [21.96ms]  SELECT * FROM `users`  WHERE (name = 'yike')  
//[1 rows affected or returned ] 

物理删除

//物理删除
//db.Debug().Unscoped().Where("name = ?", "zisefeizhu").Delete(&User{})
db.Debug().Unscoped().Where("name = ?", "yike").Delete(&User{})

95_5.png

不使用软删除

package main

import (
   "github.com/jinzhu/gorm"
   _ "github.com/jinzhu/gorm/dialects/mysql"
)

//1. 定义模型
type User struct {
   //gorm.Model
   ID int
   Name string
   Age byte
   Active bool
}

func main() {
   //2. 连接Mysql数据库
   db, err := gorm.Open("mysql","root:123456@tcp(127.0.0.1:3306)/db?charset=utf8mb4&parseTime=True&loc=Local")
   if err != nil {
      panic(err)
   }
   defer db.Close()
   //3. 把模型与数据库中的表对应起来
   db.AutoMigrate(&User{})
   ////创建记录
   u1 := User{Name:"zisefeizhu", Age: 22, Active: true}
   db.Create(&u1)
   u2 := User{Name:" jingxing", Age: 21, Active:false}
   db.Create(&u2)
}

95_6.png

package main

import (
   "github.com/jinzhu/gorm"
   _ "github.com/jinzhu/gorm/dialects/mysql"
)

//1. 定义模型
type User struct {
   //gorm.Model
   ID int
   Name string
   Age byte
   Active bool
}

func main() {
   //2. 连接Mysql数据库
   db, err := gorm.Open("mysql","root:123456@tcp(127.0.0.1:3306)/db?charset=utf8mb4&parseTime=True&loc=Local")
   if err != nil {
      panic(err)
   }
   defer db.Close()
   //3. 把模型与数据库中的表对应起来
   db.AutoMigrate(&User{})
   //删除
   db.Debug().Where("name=?","zisefeizhu").Delete(User{})
}

95_7.png

文章永久链接:https://tech.souyunku.com/?p=38552


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(91) 打赏



未经允许不得转载:搜云库技术团队 » gorm系列-删除

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367