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>)
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()
Mit diesem Ansatz werden die folgenden Abfragen ausgeführt:
select * from `posts` select id, username from `users` where `users`.`id` in (<1>, <2>)
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!