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

Comment effectuer plusieurs jointures de tables avec GORM ?

Linda Hamilton
Libérer: 2024-10-24 10:27:29
original
1086 Les gens l'ont consulté

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>
Copier après la connexion

É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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal