我有以下模型type Instance struct { gorm.Model Name string `gorm:"index:idx_name_and_group,unique"` UserID uint GroupID uint `gorm:"index:idx_name_and_group,unique"` ...}type Group struct { gorm.Model Name string `gorm:"unique;"` Instances []Instance ...}我正在嘗試按名稱和組名稱獲取實(shí)例。我可以使用以下代碼執(zhí)行此操作func (r instanceRepository) FindByName(groupName string, instanceName string) (*model.Instance, error) { var instance *model.Instance var group *model.Group err := r.db. First(&group, "name = ?", groupName).Error if err != nil { return nil, err } err = r.db. Where("name = ? and group_id = ?", instanceName, group.ID). First(&instance).Error return instance, err}但我想把它變成一個(gè)查詢。關(guān)于如何實(shí)現(xiàn)這一目標(biāo)的任何想法?
1 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
您始終可以使用聯(lián)接函數(shù)來執(zhí)行 SQL 聯(lián)接。像這樣:
func (r instanceRepository) FindByName(groupName string, instanceName string) (*model.Instance, error) {
var instance *model.Instance
err := r.db.
Joins("INNER JOIN groups g ON g.id = instances.group_id").
Where("g.name = ? AND instances.name = ?", groupName, instanceName).
First(&instance).Error
if err != nil {
return nil, err
}
return instance, err
}
- 1 回答
- 0 關(guān)注
- 94 瀏覽
添加回答
舉報(bào)
0/150
提交
取消