我想知道如何在GORM中永久删除关联。我尝试了文档中显示的所有示例,但无法使关联被永久删除。例如,我对GORM文档中删除和清除关联的说明感到困惑,其中明确指出:
我有类似的结构体:
不会从数据库中删除这些对象
。(我不理解删除对象而不从数据库中删除它们是什么意思。)我有类似的结构体:
type User struct {
gorm.Model
City string `sql:"type:varchar(255);not null"`
Cards []Card `gorm:"foreignKey:UserID;constraint:OnDelete:CASCADE"`
}
type Card struct {
ID uint `gorm:"primary_key"`
UserID uint `gorm:"column:user_id"`
}
我希望以GORM形式执行以下SQL查询:
DELETE c
FROM cards c
JOIN users u ON c.user_id = u.id
WHERE u.name = `Madrid`
db.Select(clause.Associations).Delete(&user)
仅仅是硬删除了所有关联。我来这里寻找解决相反问题的方法;我只想软删除它们。是否有一种方法可以避免使用db.Model(&user).Association("Cards").Clear()
,而无需列出所有关联(可称为硬编码)?另外需要指出的是,该答案会删除父记录,而这并不是问题想要的结果。 - scenia