Golang GORM Delete with Select



我正在尝试级联删除以下结构:

type Action struct {
gorm.Model
Name  string
Email string
Halls []Hall `gorm:"foreignKey:ActionID"`
}
type Hall struct {
gorm.Model
Name     string
ActionID uint
Stream   Stream  `gorm:"foreignKey:HallID"`
}
type Stream struct {
ID     uint `gorm:"primaryKey"`
HallID uint
Name   string
}

db.Select("Halls").Delete(&action)-适用于选定的action和所有相关的halls

如何删除此和相关的streams
类似于:

db.Select("Halls", "Streams").Delete(&action)  
db.Select("Streams").Select("Halls").Delete(action)  

不起作用。

感谢

  • 不能在同一查询中同时使用delete和select意味着这样做不是可行的解决方案但是是的,你可以使用这个参考链接

  • 尝试删除带有where条件的操作并指定HallID

db.其中("hall_id IN?",HallID(.删除(&action(

并在Stream中将HallID设置为constraint:OnDelete:CASCADE,因此当您删除Halls时,Streams将自动删除与该Halls 相关的任何一个

我不能对M_x发表评论,所以我将把它作为一个答案。

允许您使用带有关联的"Select"进行"Delete"。看见https://gorm.io/docs/associations.html#Delete-选择

然而,我也在寻找一种嵌套关联的解决方案,其中嵌套是结构的一部分。

最新更新