Anbringen / Abnehmen
Eloquent bietet außerdem einige zusätzliche Hilfsmethoden, um die Arbeit mit verwandten Modellen zu vereinfachen. Stellen wir uns zum Beispiel vor, ein Benutzer kann viele Rollen haben und eine Rolle kann viele Benutzer haben. Verwenden Sie die Methode attach, um einem Benutzer eine Rolle zuzuweisen, indem Sie einen Datensatz in die Zwischentabelle einfügen, die die Modelle verknüpft:
$user = App\User::find(1);
$user->roles()->attach($roleId);
Wenn Sie eine Beziehung an ein Modell anhängen, können Sie auch ein Array zusätzlicher Daten übergeben, die in die Zwischentabelle eingefügt werden sollen:
$user->roles()->attach($roleId, ['expires' => $expires]);
Sie können Sync auch verwenden, wenn Sie alte Rollen entfernen und nur die neuen beibehalten möchten, die Sie jetzt anhängen
$user->roles()->sync([1 => ['expires' => $expires], 2 => ['expires' => $expires]);
Das Standardverhalten kann geändert werden, indem als zweites Argument ein 'false' übergeben wird. Dadurch werden die Rollen mit den IDs 1,2,3 verknüpft, ohne die vorhandenen Rollen zu beeinflussen.
In diesem Modus verhält sich die Synchronisierung ähnlich wie die Attach-Methode.
$user->roles()->sync([1 => ['expires' => $expires], 2 => ['expires' => $expires], false);
Referenz:
https://laravel.com/docs/5.4/eloquent-relationships