Maison >développement back-end >Golang >Comment effectuer plusieurs jointures de tables avec GORM ?

Comment effectuer plusieurs jointures de tables avec GORM ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-24 10:27:291074parcourir

How to Perform Multiple Table Joins with GORM?

Jointures de tables multiples dans GORM

Joindre des tables dans GORM vous permet de récupérer des données associées à partir de plusieurs tables simultanément. Voici comment effectuer une requête de jointure impliquant trois tables :

Structure de table

Considérez la structure de table suivante :

  • Département (gorm.Model, dep_name)
  • Employé (gorm.Model, emp_id, emp_name, Department_id)
  • EmployeeContact (gorm. Model, Employee_id, emp_contact_no)

Exemple de requête

Supposons que vous souhaitiez récupérer toutes les colonnes des trois tables où l'ID d'un service correspond à l'ID du service d'un employé, et l'ID de cet employé correspond à l'id_employé d'un employéContact :

Requête 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>

Équivalent 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>

Dans cet exemple :

  • Table() spécifie la table à partir de laquelle démarrer la jointure.
  • Select() sélectionne les colonnes à récupérer de chaque table jointe.
  • Joindres () établit les relations de jointure en fonction des contraintes de clé étrangère.
  • Find() récupère les résultats dans la tranche de résultats.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn