Heim  >  Artikel  >  PHP-Framework  >  So verbinden Sie mehrere Tabellen in Laravel

So verbinden Sie mehrere Tabellen in Laravel

WBOY
WBOYOriginal
2023-05-20 20:58:362489Durchsuche

In der Laravel-Entwicklung ist die gemeinsame Abfrage mehrerer Tabellen eine übliche Operation. Eine Join-Abfrage kann Daten aus mehreren Tabellen gemäß bestimmten Bedingungen kombinieren und einen Ergebnissatz der erforderlichen Daten zurückgeben. Um eine gemeinsame Abfrage mehrerer Tabellen in Laravel zu implementieren, müssen Sie die leistungsstarken Funktionen von Eloquent ORM verwenden. In diesem Artikel wird die Verwendung der gemeinsamen Laravel-Mehrtabellenabfrage vorgestellt.

  1. Eloquent ORM

Laravels Eloquent ORM ist eine objektrelationale Mapping-Technologie (ORM), die eine flexible und einfache Möglichkeit bietet, auf Datenbanken zuzugreifen und diese zu betreiben. Eloquent ORM erreicht dies durch die Zuordnung von Datenbanktabellen zu Objekten. Diese Objekte können durch PHP-Code manipuliert werden und ihr Zustand bleibt in der Datenbank erhalten. Der Hauptvorteil von ORM besteht darin, dass es komplexe SQL-Anweisungen in einfache Objektmethodenaufrufe umwandelt, sodass sich Entwickler auf die Codelogik statt auf SQL-Anweisungen konzentrieren können.

  1. Abfrage mit mehreren Tabellen

Laravel bietet eine Vielzahl von Methoden zum Implementieren gemeinsamer Abfragen mit mehreren Tabellen. Unter diesen ist die Verwendung der eloquenten Korrelation die gebräuchlichste Methode. Da das Eloquent ORM von Laravel leistungsstarke Korrelationsfunktionen bietet, ist es sehr praktisch, Eloquent-Korrelationen in Abfragen mit mehreren Tabellen zu verwenden. Im Folgenden sind einige häufig verwendete Abfragemethoden für mehrere Tabellen aufgeführt.

2.1 Eins-zu-eins-Zuordnung

Eine Eins-zu-eins-Zuordnung bedeutet, dass es nur eine übereinstimmende Zeile zwischen den beiden Tabellen gibt. Die Implementierung einer Eins-zu-Eins-Zuordnung in Laravel ist sehr einfach. Definieren Sie einfach die Methode hasOne oder heardTo in Ihrem Modell.

Betrachten Sie zum Beispiel die folgenden zwei Tabellen:

Benutzername | Als Benutzerinformationen können Sie eine hasOne-Beziehung im Benutzermodell definieren:

class User erweitert das Modell

{

public function profile()
{
    return $this->hasOne('AppModelsProfile');
}

}

Definieren Sie dann eine „gehörtTo“-Methode im Profilmodell, um die Zuordnung anzugeben:

class Profil erweitert das Modell

{

public function user()
{
    return $this->belongsTo('AppModelsUser');
}

}

Jetzt können Sie den folgenden Code verwenden, um den Benutzer und sein Profil abzurufen:

$user = User::with('profile')->find(1);


In diesem Beispiel , die with-Methode wird verwendet, um Eager Loading durchzuführen. Dadurch werden der Benutzer und die mit ihm verknüpften Profile in einer Abfrage abgerufen, wodurch redundante Abfragen vermieden werden. Die Suchmethode wird verwendet, um den Benutzer mit der angegebenen ID zu finden. Beachten Sie, dass Eloquent beim Definieren einer Beziehung den Fremdschlüssel standardmäßig als Namen des zugehörigen Modells + „_id“ benennt, wie zum Beispiel das Feld „user_id“ in diesem Beispiel.

2.2 Eins-zu-viele-Zuordnung

Eins-zu-viele-Zuordnung bedeutet, dass eine Zeile in einer Tabelle mit mehreren Zeilen in einer anderen Tabelle verknüpft werden kann. Die Implementierung einer Eins-zu-viele-Assoziation in Laravel ist sehr einfach. Definieren Sie einfach die Methode hasMany oder heardTo im Modell.

Betrachten Sie zum Beispiel die folgenden zwei Tabellen:

Benutzername | Für Artikel des Benutzers können Sie eine hasMany-Beziehung im User-Modell definieren:

class User erweitert Model

{

public function posts()
{
    return $this->hasMany('AppModelsPost');
}

}

Definieren Sie dann eine „gehörtTo“-Methode im Post-Modell, um die Zuordnung anzugeben:

class Post erweitert Model

{

public function user()
{
    return $this->belongsTo('AppModelsUser');
}

}

Jetzt können Sie den folgenden Code verwenden, um den Benutzer und alle seine Beiträge abzurufen:

$user = User::with('posts')->find(1);

In diesem Beispielsweise sucht Eloquent automatisch alle Beiträge, deren Benutzer-ID der aktuellen Benutzer-ID entspricht, und legt sie als Beitragsattribut des Benutzermodells fest. Beachten Sie, dass Eloquent beim Definieren einer Beziehung den Fremdschlüssel standardmäßig als Namen des zugehörigen Modells + „_id“ benennt, wie zum Beispiel das Feld „user_id“ in diesem Beispiel.

2.3 Viele-zu-viele-Zuordnung

Many-zu-viele-Zuordnung bedeutet, dass zwischen zwei Tabellen mehrere übereinstimmende Zeilen vorhanden sein können. Um eine Viele-zu-Viele-Assoziation in Laravel zu implementieren, müssen Sie die Methode „gehörtToMany“ verwenden.

Betrachten Sie zum Beispiel die folgenden zwei Tabellen:


Benutzername |. Erstellt_at

Benutzername |

id | user_id |.role_id

Um alle Benutzer mit einer bestimmten Rolle zu finden, können Sie im Rollenmodell eine Zugehörigkeits-zu-Many-Beziehung definieren: um die Zuordnung anzugeben:

class User erweitert Model

{

public function users()
{
    return $this->belongsToMany('AppModelsUser');
}

}

Sie können jetzt den folgenden Code verwenden, um alle Benutzer mit einer angegebenen Rolle abzurufen:

$users = Role::with('users')-> ;where(' name', 'admin')->get();

In diesem Beispiel wird die with-Methode verwendet, um Eager Loading durchzuführen, und die get-Methode wird verwendet, um alle Benutzer mit der angegebenen Rolle abzurufen. Beachten Sie, dass eine Viele-zu-Viele-Assoziation das Vorhandensein einer Zwischentabelle erfordert, die zum Speichern der Beziehung zwischen den beiden Tabellen in der Datenbank verwendet wird.

Zusammenfassung

Laravel ist ein leistungsstarkes Webentwicklungs-Framework, das viele praktische Funktionen zur Vereinfachung des Entwicklungsprozesses bietet, darunter Eloquent ORM. Eloquent ORM bietet eine einfache und leistungsstarke Möglichkeit, mit Datenbanken umzugehen, einschließlich Multi-Table-Join-Abfragen. Wenn wir mit der Eloquent-Korrelation von Laravel vertraut sind, ist die Implementierung einer gemeinsamen Abfrage mit mehreren Tabellen eine einfache Sache.

Das obige ist der detaillierte Inhalt vonSo verbinden Sie mehrere Tabellen in Laravel. 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
Vorheriger Artikel:laravel zwischen wasNächster Artikel:laravel zwischen was