首页 >后端开发 >Golang >如何使用 GORM 执行多个表连接?

如何使用 GORM 执行多个表连接?

Linda Hamilton
Linda Hamilton原创
2024-10-24 10:27:291073浏览

How to Perform Multiple Table Joins with GORM?

GORM 中的多个表连接

GORM 中的连接表允许您同时从多个表中检索相关数据。以下是如何执行涉及三个表的联接查询:

表结构

考虑以下表结构:

  • Department (gorm.Model, dep_name)
  • 员工 (gorm.Model, emp_id, emp_name, Department_id)
  • EmployeeContact (gorm. 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>

中此示例:

  • Table() 指定从中开始联接的表。
  • Select() 选择要从每个联接表中检索的列。
  • 联接() 根据外键约束建立联接关系。
  • Find() 将结果检索到结果切片中。

以上是如何使用 GORM 执行多个表连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn