下面是根据 https://gorm.io/docs/associations.html#Delete-Associations 写的程序,想要在删除User时同时删除其Company关联,但是不成功。不确定是 docs 有误还是Delete的实现有误。
package main
import (
"fmt"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type User struct {
ID int64 `gorm:"primarykey"`
Name string
CompanyID int64
Company Company
}
type Company struct {
ID int64 `gorm:"primarykey"`
Name string
}
func main() {
db, _ := gorm.Open(sqlite.Open("file::memory:"))
db.AutoMigrate(&User{})
var user1 = User{
Name: "User1",
Company: Company{Name: "company1"},
}
db.Create(&user1)
// Neither of the following works
db.Select("Company").Delete(&user1)
db.Select(clause.Associations).Delete(&user1)
var c []Company
db.Find(&c)
fmt.Println(c)
}
运行后输出
[{1 company1}]
从控制台输出可以看出,删除user1后,companies表中依然存在数据。
Comment From: github-actions[bot]
The issue has been automatically marked as stale as it missing playground pull request link, which is important to help others understand your issue effectively and make sure the issue hasn't been fixed on latest master, checkout https://github.com/go-gorm/playground for details. it will be closed in 30 days if no further activity occurs. if you are asking question, please use the Question template, most likely your question already answered https://github.com/go-gorm/gorm/issues or described in the document https://gorm.io ✨ Search Before Asking ✨