亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何刪除關聯(many2many)?

如何刪除關聯(many2many)?

Go
MM們 2022-11-23 19:29:54
發生刪除關聯的奇怪行為。查詢生成了一個我沒有添加的額外條件。type Client struct {    gorm.Model    Name        string      `gorm:"unique;not null" validate:"required,min=1,max=30"`    Kyc_status  string      `gorm:"not null" validate:"required,min=1,max=30"`    Kyc_remarks string      `gorm:"default:null" validate:"omitempty,min=0,max=200"`    Operators   []*Operator `gorm:"many2many:client_operators;"`    Op_ids      []string    `gorm:"-:all" validate:"omitempty,dive,numeric"` // placeholder field, wont be part of table}type Operator struct {    gorm.Model    Title       string    `gorm:"unique;not null" validate:"required,min=1,max=100"`    Email       string    `gorm:"not null" validate:"required,email"`    Mobile      string    `gorm:"not null" validate:"required,min=7,max=15,numeric"`    Last_online time.Time `gorm:"default:null" validate:"omitempty"`    Last_ip     string    `gorm:"default:null" validate:"omitempty,ip"`    Clients     []*Client `gorm:"many2many:client_operators;"`    Cli_ids     []string  `gorm:"-:all" validate:"omitempty,dive,numeric"`}// find operators related to clientvar client_query *ClientDBconnection.Where("id = ?", pk).Preload("Operators").First(&client_query)// delete operators related to clientDBconnection.Model(&Client{}).Where("client_id = ?", pk).Association("Operators").Delete(&client_query.Operators)我希望刪除是:[2.000ms] [行:0] 從 `client_operators` 中刪除,其中 client_id = 5 AND `client_operators`.`operator_id` = 1或者[2.000ms] [行:0] 從 `client_operators` 中刪除,其中 `client_operators`.`client_id` = 5 AND `client_operators`.`operator_id` = 1但是它目前確實:[2.000ms] [行:0] 從 `client_operators` 中刪除,其中 client_id = 5 AND `client_operators`.`client_id` IN (NULL) AND `client_operators`.`operator_id` = 1它添加了“ AND `client_operators`.`client_id` IN (NULL) ”的額外條件我試過 Association().Clear() 也沒有做任何事情。
查看完整描述

1 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

發生這種情況是因為您要傳遞&Client{}給Model.


查看gorm 文檔,您需要首先構建一個有效的客戶端,Id如下所示:


type Client struct {

    gorm.Model

    Name        string      `gorm:"unique;not null" validate:"required,min=1,max=30"`

    Kyc_status  string      `gorm:"not null" validate:"required,min=1,max=30"`

    Kyc_remarks string      `gorm:"default:null" validate:"omitempty,min=0,max=200"`

    Operators   []*Operator `gorm:"many2many:client_operators;"`

    Op_ids      []string    `gorm:"-:all" validate:"omitempty,dive,numeric"` // placeholder field, wont be part of table

}

type Operator struct {

    gorm.Model

    Title       string    `gorm:"unique;not null" validate:"required,min=1,max=100"`

    Email       string    `gorm:"not null" validate:"required,email"`

    Mobile      string    `gorm:"not null" validate:"required,min=7,max=15,numeric"`

    Last_online time.Time `gorm:"default:null" validate:"omitempty"`

    Last_ip     string    `gorm:"default:null" validate:"omitempty,ip"`

    Clients     []*Client `gorm:"many2many:client_operators;"`

    Cli_ids     []string  `gorm:"-:all" validate:"omitempty,dive,numeric"`

}


// find operators related to client

var client_query *Client

DBconnection.Where("id = ?", pk).Preload("Operators").First(&client_query)




// delete operators related to client

DBconnection.Model(&Client{ID: pk}).Association("Operators").Delete(&client_query.Operators)


查看完整回答
反對 回復 2022-11-23
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號