Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führt man mit GORM mehrere Tabellenverknüpfungen durch?

Wie führt man mit GORM mehrere Tabellenverknüpfungen durch?

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 10:27:29979Durchsuche

How to Perform Multiple Table Joins with GORM?

Mehrere Tabellenverknüpfungen in GORM

Durch das Verknüpfen von Tabellen in GORM können Sie verwandte Daten aus mehreren Tabellen gleichzeitig abrufen. So führen Sie eine Join-Abfrage mit drei Tabellen durch:

Tabellenstruktur

Beachten Sie die folgende Tabellenstruktur:

  • Abteilung (gorm.Model, dep_name)
  • Employee (gorm.Model, emp_id, emp_name, Department_id)
  • EmployeeContact (gorm. Modell, Mitarbeiter-ID, Emp_Kontaktnummer)

Beispielabfrage

Angenommen, Sie möchten alle Spalten aus den drei Tabellen abrufen, in denen die ID einer Abteilung mit der Abteilungs-ID eines Mitarbeiters übereinstimmt, und Die ID dieses Mitarbeiters stimmt mit der Mitarbeiter-ID eines Mitarbeiterkontakts überein:

SQL-Abfrage:

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

<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 dieses Beispiel:

  • Table() gibt die Tabelle an, von der aus der Join gestartet werden soll.
  • Select() wählt die Spalten aus, die aus jeder verbundenen Tabelle abgerufen werden sollen.
  • Joins () stellt die Join-Beziehungen basierend auf Fremdschlüsseleinschränkungen her.
  • Find() ruft die Ergebnisse im Ergebnis-Slice ab.

Das obige ist der detaillierte Inhalt vonWie führt man mit GORM mehrere Tabellenverknüpfungen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn