Heim >Backend-Entwicklung >PHP-Tutorial >Wie synchronisiere ich ein Array mit mehreren Pivot-Feldern in Laravel?

Wie synchronisiere ich ein Array mit mehreren Pivot-Feldern in Laravel?

Susan Sarandon
Susan SarandonOriginal
2024-10-19 17:53:29977Durchsuche

How to Sync an Array with Multiple Pivot Fields in Laravel?

Synchronisieren eines Arrays mit zusätzlichen Pivot-Feldern in Laravel

In Laravel ermöglicht Ihnen die sync()-Methode die Verwaltung der Many-to- viele Beziehungen zwischen Modellen. Während die Dokumentation Beispiele für die Synchronisierung einer einzelnen Pivot-Zeile bereitstellt, geht sie nicht explizit darauf ein, wie benutzerdefinierte Pivot-Daten mehreren synchronisierten Zeilen zugeordnet werden.

Die Lösung besteht darin, für jedes verwandte Modell, das Sie verwenden, ein Array von Pivot-Daten anzugeben möchte synchronisieren. Durch die Bereitstellung eines Schlüssel-Wert-Paares, bei dem der Schlüssel die ID des zugehörigen Modells und der Wert ein Array von Pivot-Feldwerten ist, können Sie jeder synchronisierten Zeile zusätzliche Pivot-Daten zuordnen.

Betrachten Sie beispielsweise ein Benutzermodell das eine Viele-zu-Viele-Beziehung zu einem Vorbild hat. Die Pivot-Tabelle für diese Beziehung verfügt über ein Ablauffeld. Wenn Sie drei Rollen mit jeweils einem anderen Ablaufwert mit dem Benutzer synchronisieren möchten, können Sie dies wie folgt tun:

<code class="php">$user->roles()->sync([
    1 => ['expires' => true],
    2 => ['expires' => false],
    3 => ['expires' => null],
]);</code>

Dadurch wird der Benutzer mit drei Rollen-IDs synchronisiert und die angegebenen Ablaufwerte zugeordnet mit jeder Zeile in der Pivot-Tabelle.

Das obige ist der detaillierte Inhalt vonWie synchronisiere ich ein Array mit mehreren Pivot-Feldern in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn