2016-05-14 18 views
1

In Laravel, was ist der Unterschied zwischen diesen beiden Funktionsaufrufen?Verschiedene Ergebnisse mit Laravel Lazy Eager Loading

$this->load(['episodes.item.cast' => function ($q) use (&$cast) { 
    $cast = $q->get()->groupBy("id"); 
}]); 

und

$cast = $this->load('episodes.item.cast')->get()->groupBy("id"); 

Sie produzieren unterschiedliche Ergebnisse, aber ich verstehe nicht, warum.

Antwort

1

Ich nehme an, $this ist bereits vorhandenes Objekt (weil Sie load darauf verwenden). Mit Existing meine ich $this->exists => true.

Und der Punkt dort. Erste Abfrage ist nur OK, aber wirklich seltsam. Aber zweitens ist überhaupt nicht OK. Unter Verwendung von ->get() für ein vorhandenes Objekt erstellen Sie eine neue leere Abfrage und rufen alle Werte ab.

Also im Grunde, wenn Sie bereits für Objekt $obj = YourModel::find(1) zum Beispiel abgefragt und dann $obj->get() ausgeführt haben, erhalten Sie das gleiche Ergebnis wie YourModel::all().

+0

Okay. Also die erste Abfrage gibt das Ergebnis, das ich will aber auf eine seltsame Art und Weise. Wie könnte ich es umschreiben, aber trotzdem die gleichen Ergebnisse erzielen? Was macht es "seltsam"? –

Verwandte Themen