查询一种关系的正确方法

问题描述 投票:0回答:1

如果我正在寻找信用卡号为CreditCardNumber的人,这是这样做的正确方法吗?

type Person struct { gorm.Model Name string CreditCard CreditCard }

type CreditCard struct { gorm.Model PersonID *uint Number string }

database.dbClient.Preload("CreditCard").Where("credit_card.number = ?", CreditCardNumber).Joins("left join credit_cards on person.id = credit_card.person_id AND credit_card.deleted_at is NULL").First(&Person)

gorm go-gorm
1个回答
0
投票

[如果只有信用卡像您的查询一样启用了软删除, (您仅检查信用卡的delete_at)

db.Unscoped().Preload("Person").Find(&CreditCard)

如果信用卡和个人模型都启用了软删除(您要检查个人和信用卡的delete_at字段)

db.Unscoped().Preload("Person", func(db* gorm.DB) *gorm.DB){
    return db.Unscoped()
}).Find(&CreditCard)
© www.soinside.com 2019 - 2024. All rights reserved.