[英]How can i build a subquery in a gorm belongs-to relationship?
我在 go 中使用 GORM 進行 mysql 查詢。 我有以下結構
type Patient struct {
gorm.Model
}
type ClinicalTrialPatient struct {
gorm.Model
PatientID uint
Patient Patient
}
我想 go 生成一個 SQL 語句,如
SELECT * FROM `clinical_trial_patients` WHERE patient_id IN (SELECT ID FROM Patients WHERE pvs_pat_id = '1' AND DELETED_AT is null) AND `clinical_trial_patients`.`deleted_at` IS NULL
不幸的是,我不明白如何生成這樣的聲明。 我正在嘗試這樣的事情:
result := orm.Where(&ClinicalTrialPatient{
Patient: Patient{
PvsPatId: "1",
},
}).Find(&trialPatients)
但是生成了以下語句
SELECT * FROM `clinical_trial_patients` WHERE `clinical_trial_patients`.`deleted_at` IS NULL
您可以使用Preload來建立屬於關系。
type Patient struct {
gorm.Model
ClinicalTrialPatients []ClinicalTrialPatient // add this field
}
type ClinicalTrialPatient struct {
gorm.Model
PatientID uint
Patient Patient
}
...
var result Patient
err := orm.Preload("ClinicalTrialPatients").First(&result, 1).Error
if err != nil {
panic(err)
}
fmt.Println(result.ClinicalTrialPatients)
...
或者根據您的問題,您可以使用這樣的子查詢:
pvsPatId := "1"
err := orm.
Where(
"patient_id in (?)",
db.Table("Patients").
Select("id").
Where("pvs_pat_id = ?", pvsPatId),
).
Find(&trialPatients).Error
if err != nil {
panic(err)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.