Laravel : Sync() avec des champs pivots supplémentaires
Dans Laravel, la fonction sync() est utilisée pour synchroniser une relation de modèle avec un ensemble d’identifiants. Cependant, il est également possible de spécifier des champs pivot supplémentaires lors de la synchronisation.
Utilisation par défaut :
Comme décrit dans la documentation de Laravel, vous pouvez synchroniser un simple ensemble d'identifiants comme ceci :
<code class="php">$user->roles()->sync([1, 2, 3]);</code>
Synchronisation avec les champs croisés dynamiques :
Si vous souhaitez associer des valeurs spécifiques de tableau croisé dynamique aux identifiants, vous pouvez les spécifier sous forme de tableau :
<code class="php">$user->roles()->sync([ 1 => ['expires' => true] ]);</code>
Cet exemple ajoute une seule ligne pivot avec le champ d'expiration défini sur true.
Enregistrements pivot multiples avec des données personnalisées :
Pour Pour synchroniser plusieurs modèles avec des données pivot personnalisées, vous pouvez utiliser la syntaxe suivante :
<code class="php">$user->roles()->sync([ 1 => ['expires' => true], 2 => ['expires' => false], ... ]);</code>
Cet exemple synchronise deux rôles, chacun avec sa propre valeur d'expiration.
Exemple avec entrée de tableau :
Si vous recevez des identifiants et des données pivot sous forme de tableau, vous pouvez utiliser array_combine() pour créer les données de synchronisation :
<code class="php">$speakers = (array) Input::get('speakers'); // Get related IDs $pivotData = array_fill(0, count($speakers), ['is_speaker' => true]); $syncData = array_combine($speakers, $pivotData); $user->roles()->sync($syncData);</code>
En suivant ces directives, vous pouvez synchronisez efficacement les données avec les champs pivots personnalisés dans Laravel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!