Heim >Backend-Entwicklung >PHP-Tutorial >Wie weise ich beim Synchronisieren eines Arrays zusätzliche Pivot-Tabellenwerte in Laravel zu?

Wie weise ich beim Synchronisieren eines Arrays zusätzliche Pivot-Tabellenwerte in Laravel zu?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-19 17:52:02877Durchsuche

How to Assign Additional Pivot Table Values in Laravel when Syncing an Array?

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

Mit der Laravel sync()-Methode können Sie die Beziehung eines Modells mit einem Array verwandter IDs synchronisieren. Was aber, wenn Sie diesen IDs zusätzliche Pivot-Tabellenwerte zuordnen müssen?

Pivot-Werte für mehrere Modelle zuweisen

Das Dokumentationsbeispiel zeigt nur, wie Pivot-Werte für ein einzelnes Modell zugewiesen werden. Um Werte für mehrere Modelle zuzuweisen, verwenden Sie die folgende Syntax:

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

Mit dieser Syntax können Sie Pivot-Werte für jedes verwandte Modell mithilfe der Array-Schlüssel-Wert-Paare angeben.

Beispiel mit Dynamic Pivot-Werte

Stellen Sie sich ein Szenario vor, in dem Sie Formulareingaben verarbeiten, um einer Veranstaltung Redner zuzuweisen. Die Eingabe ist ein Array von Sprecher-IDs und Sie müssen die Spalte „is_speaker“ in der Pivot-Tabelle auf „true“ setzen.

So können Sie dies erreichen:

<code class="php">$speakers = (array) Input::get('speakers'); // related ids
$pivotData = array_fill(0, count($speakers), ['is_speaker' => true]);
$syncData = array_combine($speakers, $pivotData);

$user->roles()->sync($syncData);</code>

Durch die Verwendung von array_fill() und array_combine() können Sie ein Array von Pivot-Werten mit den gewünschten Schlüssel-Wert-Paaren erstellen und diese dann mit der Beziehung des Modells synchronisieren.

Das obige ist der detaillierte Inhalt vonWie weise ich beim Synchronisieren eines Arrays zusätzliche Pivot-Tabellenwerte in Laravel zu?. 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