[英]Bigtable CellsColumnLimitFilter and ValueRangeFilter not working as intended
[英]On delete cascade not working as intended in Gorm
所以我对Gorm
很陌生并且正在玩它,但我似乎无法让删除级联工作。 这些是我的模型:
type Base struct {
Id string `json:"id" gorm:"type:uuid;primary_key"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type User struct {
Base
Role string `json:"role"`
Username string `json:"username" gorm:"unique"`
Password string `json:"password"`
Profile Profile `gorm:"constraint:OnDelete:CASCADE;"`
}
type Profile struct {
Base
UserId string `json:"user_id"`
Name string `json:"name"`
Bio string `json:"bio" gorm:"default:hello world!"`
Age uint8 `json:"age"`
}
问题是,当我对用户 object 执行删除操作时,它会被正确删除,但关联的Profile
object 不会被删除。 我知道Gorm
具有软删除功能,但我的Base
model 中没有gorm.DeletedAt
字段。 我的User
和Profile
model 也共享相同的Base
,因此它们在删除方面的行为应该相似。
这是我运行删除的方式:
...
id := "my-uuid" // this would be a real value. this is just an example
Database.Where("id = ?", id).Delete(&models.User{})
...
我究竟做错了什么?
谢谢!
编辑:我知道这个问题并尝试关注它,但我似乎无法让它发挥作用。
如果您使用的是 gorm v2,您可以尝试使用delete 和 select来删除主要的 object、其关系和关联对象。 它应该是这样的:
Database.Select("Profile").Delete(&models.User{ID: id})
如果您的数据库支持外键,您可以使用外键,否则您需要使用事务删除用户和配置文件 object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.