簡體   English   中英

如何在 gorm 所屬關系中構建子查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM