ホームページ  >  記事  >  バックエンド開発  >  GORM を使用して複数のテーブル結合を実行するにはどうすればよいですか?

GORM を使用して複数のテーブル結合を実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 10:27:29979ブラウズ

How to Perform Multiple Table Joins with GORM?

GORM での複数のテーブル結合

GORM でテーブルを結合すると、複数のテーブルから関連データを同時に取得できます。 3 つのテーブルを含む結合クエリを実行する方法は次のとおりです。

テーブル構造

次のテーブル構造を考えてみましょう:

  • Department (gorm.Model, dep_name)
  • 従業員 (gorm.Model, emp_id, emp_name, plan_id)
  • EmployeeContact (gorm. Model、employee_id、emp_contact_no)

クエリの例

部門の ID が従業員の部門 ID と一致するすべての列を 3 つのテーブルから取得するとします。その従業員の ID は、employeeContact の従業員 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>

Inこの例:

  • Table() は、結合を開始するテーブルを指定します。
  • Select() は、結合された各テーブルから取得する列を選択します。
  • Joins () は、外部キー制約に基づいて結合関係を確立します。
  • Find() は、結果を結果スライスに取得します。

以上がGORM を使用して複数のテーブル結合を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。