刪除記錄
刪除記錄時,需要有任何條件,否則會引發錯誤 ErrMissingWhereClause
,例如
e := query.Email |
使用主鍵刪除
GEN 允許使用內嵌條件刪除具有主鍵的物件,它適用於數字。
u.WithContext(ctx).Where(u.ID.In(1,2,3)).Delete() |
批次刪除
指定的數值沒有主鍵值,GEN 會執行批次刪除,它會刪除所有符合條件的記錄
e := query.Email |
軟刪除
如果您的模型包含 gorm.DeletedAt
欄位(包含在 gorm.Model
中),它會自動獲得軟刪除功能!
呼叫 Delete
時,記錄不會從資料庫中移除,但 GORM 會將 DeletedAt
的值設定為目前時間,且資料不再會透過一般查詢方法找到。
// Batch Delete |
如果您不想包含 gorm.Model
,您可以像這樣啟用軟刪除功能
type User struct { |
尋找軟刪除記錄
您可以使用 Unscoped
尋找軟刪除記錄
users, err := db.WithContext(ctx).Unscoped().Where(u.Age.Eq(20)).Find() |
永久刪除
您可以使用 Unscoped
永久刪除符合條件的記錄
o.WithContext(ctx).Unscoped().Where(o.ID.Eq(10)).Delete() |
刪除關聯
移除來源與引數之間的關係(如果存在),只刪除參考,不會從資料庫中刪除那些物件。
u := query.User |
使用 Select 刪除
在刪除記錄時,您可以使用 Select
刪除選定的 has one/has many/many2many 關係,例如
u := query.User |