目标:如果用户在软删除中被标记为已删除,则其日历也应被标记为已删除。
结构:
type User struct {
gorm.Model
Username string
FirstName string
LastName string
Calendar Calendar
}
type Calendar struct {
gorm.Model
Name string
UserID uint
}
约束条件:
db.Model(&Calendar{}).AddForeignKey("user_id", "users(id)", "CASCADE","CASCADE")
问题:
一个硬删除工作:用户和他的日历都被删除(记录不见了)
db.Exec("Delete from users where id=3")
软删除没有预期的效果:
db.Where("id = ?", 3).Delete(&User{})
通过软删除,
user table字段=>deleted\u at是日期。
日历表=?删除位置为空
有什么想法吗?
1条答案
按热度按时间b4qexyjb1#
软删除意味着gorm不会删除您的数据。它只标记一个非零
DeleteAt
时间戳。数据库不直接支持。所以外键在这里无效。这意味着您需要自己手动实现级联删除,如下所示: