go-gorm / gorm

The fantastic ORM library for Golang, aims to be developer friendly
https://gorm.io
MIT License
37.05k stars 3.94k forks source link

“删除关联”无法正常工作 #7152

Closed mkch closed 2 months ago

mkch commented 3 months ago

下面是根据 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表中依然存在数据。

github-actions[bot] commented 3 months ago

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.ioSearch Before Asking