Ich verwende Laravel 8. Ich habe 2 Tabellen und versuche, mit Eloquent bestimmte Spalten aus beiden Tabellen auszuwählen:
$ids = [1, 8, 14];
$food = Food::with(
['animals' => function ($query)
{
$query->select('id', 'name');
$query->where('status', 1);
}])
->select('id', 'type')
->whereIn('id', $ids)
->where('status', 1)
->get();
Wenn ich jedoch dem Food
-Modell eine select
-Methode hinzufüge, gibt Laravel null
für die animals
-Tabelle zurück.
Wenn ich für das Modell Food
keine Auswahlen spezifiziere, gibt Laravel alles aus dem Modell Food
und id
, name
aus der Tabelle animals
zurück.
Wie kann ich bei Verwendung von Eager Loading gleichzeitig aus der Tabelle Food
und Animal
auswählen?
2 Antworten
Sie müssen sicherstellen, dass Sie die und Fremdschlüssel der ID auswählen, die für die Beziehung von beiden Seiten dieser Beziehung benötigt werden. Dies ermöglicht Eloquent, Eltern mit ihren Kindern in Einklang zu bringen.
Versuchen Sie dies, geben Sie die Tabelle in select an.
Food::with(['animals' => function ($query) {
$query->where('status', 1);
}])
->select('food.id', 'animals.type', 'food.type')
->whereIn('id', $ids)
->where('status', 1)
->get();
Neue Fragen
laravel
Laravel ist ein kostenloses Open-Source-PHP-Webframework, das von Taylor Otwell erstellt wurde und für die Entwicklung von Webanwendungen nach dem MVC-Architekturmuster (Model-View-Controller) vorgesehen ist und auf Symfony basiert. Der Quellcode von Laravel wird auf GitHub gehostet und unter den Bedingungen der MIT-Lizenz lizenziert.