Laravel: Arbeit mit Eloquent Relationships

Laravel erleichtert mit Eloquent die Kommunikation mit der Datenbank ungemein. Bei der Arbeit mit Eloquent Relationships sollte man sich beim Aufruf dynamischer Variablen (mit Hilfe der Magischen Methoden von PHP) darüber im Klaren sein, dass die Instanzen der Models neue Änderungen nicht reflektieren, sondern beim ersten Aufruf dauerhaft zwischenspeichern.


Bei folgendem Beispiel verhält es sich wie erwartet:

6d32588c32f080ef1896633f261e1e14

$model->col liefert auch nach der Änderung stets den alten Wert (weil der Wert mit Model::find(42) anfangs ein einziges Mal geholt und dann gespeichert wurde). Spricht man nun mit $model->dependant_table eine andere, verbundene Tabelle an, könnte man erwarten, dass dessen zweiter Aufruf den neuen Wert liefert:

6d32588c32f080ef1896633f261e1e14

Das ist ebenfalls nicht der Fall ($dependant_table = $model->dependant_table speichert komplett die abhängige Tabelle zwischen). Um einen aktuellen Wert zu erhalten, ruft man die explizit definierte Funktion dependant_table() auf:

6d32588c32f080ef1896633f261e1e14

Zurück