Heim > Backend-Entwicklung > PHP-Tutorial > Wie wähle ich bestimmte Spalten aus verwandten Tabellen mit der Funktion „with()' von Eloquent aus?

Wie wähle ich bestimmte Spalten aus verwandten Tabellen mit der Funktion „with()' von Eloquent aus?

Barbara Streisand
Freigeben: 2024-12-26 07:28:31
Original
187 Leute haben es durchsucht

How to Select Specific Columns from Related Tables Using Eloquent's `with()` Function?

Bestimmte Spalten aus verwandten Tabellen mit der „With()“-Funktion von Eloquent abrufen

Beim Durchführen von Verknüpfungen mit der „with()“-Funktion von Eloquent Es ist möglich, bestimmte Spalten aus den zugehörigen Tabellen abzurufen. Dies ist in Szenarios nützlich, in denen nur eine Teilmenge der Spalten aus der verbundenen Tabelle erforderlich ist.

Problem:

Stellen Sie sich ein Szenario mit zwei Tabellen vor, „Benutzer“ und „Beitrag“, wobei Ein Benutzer kann mehrere Beiträge haben und jeder Beitrag gehört einem einzelnen Benutzer.

Anfänglich Ansatz:

Unter Verwendung der Standardsyntax „with('user')“ werden die folgenden Abfragen ausgeführt:

select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
Nach dem Login kopieren

Wenn jedoch nur bestimmte Spalten aus dem „ Benutzer“-Tabelle, wie „id“ und „Benutzername“, reicht der obige Ansatz nicht aus.

Lösung I: Verwenden eines Arrays als das zweite Argument in „with()“:

Durch die Übergabe eines Arrays als zweites Argument in „with()“ können Sie angeben, welche Spalten aus der zugehörigen Tabelle abgerufen werden sollen. Dieser Ansatz funktioniert jedoch nur für die Angabe von Spalten aus der ersten Tabelle.

Lösung II: Verwendung eines Abschlusses als zweites Argument in „with()“:

Zu Um bestimmte Spalten aus der zweiten Tabelle abzurufen, verwenden Sie eine Abschlussfunktion als zweites Argument im Array „with()“. Mit dieser Technik können Sie benutzerdefinierte Logik für die Auswahl von Spalten implementieren.

Post::query()
    ->with(['user' => function ($query) {
        $query->select('id', 'username');
    }])
    ->get()
Nach dem Login kopieren

Mit diesem Ansatz werden die folgenden Abfragen ausgeführt:

select * from `posts`
select id, username from `users` where `users`.`id` in (<1>, <2>)
Nach dem Login kopieren

Hinweis: Die primäre Der Schlüssel der zugehörigen Tabelle („id“ in diesem Beispiel) muss der erste Parameter in $query->select() sein, um die gewünschten Ergebnisse abzurufen.

Das obige ist der detaillierte Inhalt vonWie wähle ich bestimmte Spalten aus verwandten Tabellen mit der Funktion „with()' von Eloquent aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage