relation()` vs. `$model->relation()` in Laravel Eloquent? " />
In Laravel's Eloquent ORM wird der Unterschied zwischen $model->relation verstanden ;relation(); und $model->relation sind entscheidend.
Der Aufruf von $model->relation() ruft direkt die definierte Beziehungsfunktion auf im Modell. Diese Funktion ähnelt normalerweise:
<code class="php">public function distributors() { return $this->hasMany('Distributor'); }</code>
Durch den Aufruf von $store->distributors() erhalten Sie den Rückgabewert von $this->hasMany('Distributor'), der ein Instanz von IlluminateDatabaseEloquentRelationsHasMany.
Wann sollte $model->relation() verwendet werden: Diese Methode ist nützlich, wenn Sie die Beziehungsabfrage vor der Ausführung weiter anpassen müssen:
<code class="php">$distributors = $store->distributors()->where('priority', '>', 4)->get();</code>
Die Verwendung von $store->distributors()->get() ist eine einfachere Alternative, liefert aber das gleiche Ergebnis.
Laravel verwendet eine Technik hinter den Kulissen, die den direkten Zugriff auf Beziehungsergebnisse ermöglicht, da der Aufruf von $model->relation nicht tatsächlich auf eine vorhandene Eigenschaft zugreift. Stattdessen fängt Laravel diesen Aufruf ab und leitet ihn an __get() weiter.
Diese Methode ruft letztendlich getAttribute() mit dem Eigenschaftsnamen („distributors“) auf, der dann prüft, ob die Beziehung zwischengespeichert ist („relations“). Array). Wenn nicht und wenn eine Beziehungsmethode vorhanden ist, wird versucht, diese zu laden (getRelationshipFromMethod). Schließlich ruft das Modell die Ergebnisse aus der Beziehung über getResults() ab, das die Abfrage ausführt.
Im Wesentlichen entspricht $model->relation $model->relation()->get () und gibt die Ergebnisse der Beziehung direkt zurück.
Das Verständnis dieses Unterschieds ist für eine effektive Verwendung von Eloquent von entscheidender Bedeutung.
Das obige ist der detaillierte Inhalt vonWann sollte ich „$model->relation()' vs. „$model->relation()' in Laravel Eloquent verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!