Hier sind meine Hinweise zum Speichern und Aktualisieren aller eloquenten Beziehungen.
in Eins zu Eins :
Sie müssen HasOne für das erste Modell und BelongsTo für das zweite Modell verwenden
Datensatz auf dem ersten Modell (hinzuzufügen hasOne ) verwenden die Sparfunktion
Beispiel: $post->comments()->save($comment);
Aufzeichnung auf dem zweiten Modell (hinzuzufügen Gehört ) verwenden , um die assoziierten Funktion
Beispiel: $user->account()->associate($account); $user->save();
in Eins zu Viele :
Sie müssen HasMany für das erste Modell und BelongsTo für das zweite Modell verwenden
Verwenden Sie die Funktionen save oder saveMany , um einen Datensatz in der ersten Tabelle ( HasMany ) hinzuzufügen
Beispiel: $post->comments()->saveMany($comments);
Aufzeichnung auf dem zweiten Modell (hinzuzufügen Gehört ) verwenden , um die assoziierten Funktion
Beispiel: $user->account()->associate($account); $user->save();
in Viele zu Viele :
Sie müssen BelongsToMany für das erste Modell und BelongsToMany für das zweite Modell verwenden
Verwenden Sie zum Hinzufügen von Datensätzen zur Pivot-Tabelle die Funktionen zum Anhängen oder Synchronisieren
Beide Funktionen akzeptieren einzelne IDs oder Arrays von IDs
Der Unterschied besteht darin, zu prüfen, ob der Datensatz bereits in der Pivot-Tabelle vorhanden ist, während die Synchronisierung dies nicht tut
Beispiel: $user->roles()->attach($roleId);
im polymorphen Eins zu Viele :
Sie müssen MorphMany für das Hauptmodell und MorphTo für alle (*** fähigen) Modelle verwenden
Verwenden Sie das Speichern , um Datensätze für alle anderen Modelle hinzuzufügen
Beispiel: $course->tags()->save($tag);
Die Pivot-Tabelle sollte die folgenden Spalten enthalten:
. Hauptmodell-ID
. (*** fähig) ID
. (*** fähig) Typ
in polymorphen vielen zu vielen :
Sie müssen MorphByMany für das Hauptmodell und MorphToMany für alle (*** fähigen) Modelle verwenden
Um Datensätze für alle anderen Modelle hinzuzufügen, verwenden Sie save oder saveMany
Beispiel: $course->tags()->save($tag);
Beispiel: $course->tags()->saveMany([$tag_1, $tag_2, $tag_3]);
Die Pivot-Tabelle sollte die folgenden Spalten enthalten:
. Hauptmodell-ID
. (*** fähig) ID
. (*** fähig) Typ
in Hat viele durch (Abkürzung):
Sie müssen HasManyThrough für die erste Tabelle verwenden und die normalen Beziehungen für die anderen beiden Tabellen haben
Dies funktioniert nicht für ManyToMany- Beziehungen (wo es eine Pivot-Tabelle gibt).
Dafür gibt es jedoch eine schöne und einfache Lösung.
Hier ist ein Artikel, den ich geschrieben habe, inspiriert von dieser Antwort. Es ist wichtig, dies zu überprüfen: https://hackernoon.com/eloquent-relationships-cheat-sheet-5155498c209