Laravel sync() Function: Syncing Arrays and Adding Pivot Fields
The Laravel sync() function allows you to manage relationships between models and associate pivot fields with them.
Associating Single Pivot Row
As mentioned in the official documentation, you can specify an array of IDs to sync and associate a single pivot value with one of the IDs:
<code class="php">$user->roles()->sync(array(1 => array('expires' => true)));</code>
Associating Multiple Pivot Rows
To associate multiple pivot values with multiple IDs, create an array of IDs as keys and arrays of pivot values as values:
<code class="php">$syncData = [ 1 => ['expires' => true], 2 => ['expires' => false], ... ]; $user->roles()->sync($syncData);</code>
In the example above, each ID is mapped to a corresponding array of pivot values.
Custom Example
Suppose you want to assign multiple speakers to an event and associate each speaker with the 'is_speaker' pivot field. Here's an example:
<code class="php">$speakers = (array) Input::get('speakers'); // related ids // Create an array of pivot data with 'is_speaker' set to true for all speakers $pivotData = array_fill(0, count($speakers), ['is_speaker' => true]); // Combine the speakers array with the pivot data array $syncData = array_combine($speakers, $pivotData); $user->roles()->sync($syncData);</code>
The above is the detailed content of How to Sync Arrays and Add Pivot Fields with the Laravel sync() Function. For more information, please follow other related articles on the PHP Chinese website!