国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

GORM 刪除

2022-03-04 16:50 更新

刪除一條記錄

刪除一條記錄時,刪除對象需要指定主鍵,否則會觸發(fā)批量Delete,例如:

// Email 的 ID 是 `10`
db.Delete(&email)
// DELETE from emails where id = 10;

// 帶額外條件的刪除
db.Where("name = ?", "張三").Delete(&email)
// DELETE from emails where id = 10 AND name = "張三";

根據(jù)主鍵刪除

GORM允許通過主鍵(可以是復(fù)合主鍵)和內(nèi)聯(lián)條件來刪除對象,它可以使用數(shù)字,如以下例子

db.Delete(&User{}, 10)
// DELETE FROM users WHERE id = 10;

db.Delete(&User{}, "10")
// DELETE FROM users WHERE id = 10;

db.Delete(&users, []int{1,2,3})
// DELETE FROM users WHERE id IN (1,2,3);

批量刪除

如果指定的值不包括主屬性,那么 GORM 會執(zhí)行批量刪除,它將刪除所有匹配的記錄

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

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

軟刪除

如果你的模型包含了一個gorm.deletedat字段(gorm.Model 已經(jīng)包含了該字段),它將自動獲得軟刪除的能力!擁有軟刪除能力的模型調(diào)用Delete時,記錄不會被數(shù)據(jù)庫刪除。但GORM會將DeletedAt置為當(dāng)前時間, 并且你不能再通過普通的查詢方法找到該記錄。

// user 的 ID 是 `111`
db.Delete(&user)
// UPDATE users SET deleted_at="2022-03-04 10:16" WHERE id = 111;

// 批量刪除
db.Where("age = ?", 20).Delete(&User{})
// UPDATE users SET deleted_at="2022-03-04 10:16" WHERE age = 20;

// 在查詢時會忽略被軟刪除的記錄
db.Where("age = 20").Find(&user)
// SELECT * FROM users WHERE age = 20 AND deleted_at IS NULL;

如果你不想引入gorm.Model,你也可以這樣啟用軟刪除特性

type User struct {
	ID      int
	Deleted gorm.DeletedAt
	Name    string
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號