首頁  >  文章  >  後端開發  >  如何使用 GORM 執行多個表連線?

如何使用 GORM 執行多個表連線?

Linda Hamilton
Linda Hamilton原創
2024-10-24 10:27:29979瀏覽

How to Perform Multiple Table Joins with GORM?

GORM 中的多個表連接

GORM 中的連接表可讓您同時從多個表中擷取相關資料。以下是如何執行涉及三個表格的聯接查詢:

表格結構

考慮以下表格結構:

  • Department (gorm.Model, dep_name)
  • 員工 (gorm.Model, emp_id, emp_name, Department_id)
  • EmployContact; Model、employee_id、emp_contact_no)

範例查詢

假設您要從三個表中擷取部門ID 與員工的Department_id 相符的所有欄位,並且該員工的ID 與員工聯絡人的email_id 相符:

SQL 查詢:

<code class="sql">SELECT * FROM department d, employee e, employeeContact ec WHERE d.id = e.department_id and e.id = ec.employee_id;</code>

GORM 等效

<code class="go">import (
    "gorm.io/gorm"
)

func MultipleJoinExample(db *gorm.DB) error {
    type Result struct {
        DepartmentID   uint
        EmployeeID    uint
        EmployeeName  string
        EmployeeContactNo string
    }
    var results []Result

    if err := db.Table("employee").Select("department.id, employee.department_id, employeeContact.employee_id, employee.emp_name, employeeContact.emp_contact_no").
        Joins("JOIN department on department.id = employee.department_id").
        Joins("JOIN employeeContact on employeeContact.id = employee.id").
        Find(&results).Error; err != nil {
        return err
    }

    return nil
}</code>
GORM 等效

  • GORM 等效
  • GORM 等效
GORM 等。 >中此範例:Table() 指定從中開始聯結的表。 Select() 選擇要從每個聯接表中擷取的欄位。 聯接() 依外鍵約束建立聯結關係。 Find() 將結果檢索到結果切片中。

以上是如何使用 GORM 執行多個表連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn