Я бы хотел установить условие where с полем внешнего ключа в GORM, но я не могу этого сделать. Сейчас я имею дело с двумя моделями.
type Call struct {
ID uint `gorm:"primary_key"`
Status string `gorm:"type:varchar(50)"`
ConditionID uint
Condition Condition
JoinStatus *string `gorm:"type:varchar(50)"`
CreatedAt time.Time
UpdatedAt time.Time
}
type Condition struct {
ID uint `gorm:"primary_key"`
BigLocationID uint
BigLocation Location
ClassID uint
Class *Class
MixStr *string `gorm:"type:text"`
MixClassIDs *string `gorm:"type:varchar(50)"`
SituationIDs *string `gorm:"type:varchar(255)"`
GiftPoint int `gorm:"type:integer;default:0"`
Desired *string `gorm:"type:varchar(255)"`
CreatedAt time.Time
UpdatedAt time.Time
}
Теперь я хочу получить список вызовов, условия которых удовлетворяют некоторым требованиям. ID класса Condition должен быть 3 или MixClassIDs содержит 3. Я могу сделать запрос Condition и получить их список.
query := fmt.Sprintf("class_id = %d OR mix_class_ids REGEXP ',%d,'", 3, 3)
var conditions []Condition
err := DB.Where(query).Find(&conditions).Error
Но это не то, что я хочу. Я хочу получать звонки с такими условиями сразу. Как я могу получить список вызовов, в котором их Condition ClassID равен 3 или MixClassIDs содержит "3"? Пожалуйста, помогите мне.