La méthode Laravel sync() vous permet de synchroniser la relation d'un modèle avec un tableau d'ID associés. Mais que se passe-t-il si vous devez associer des valeurs de tableau croisé dynamique supplémentaires à ces identifiants ?
L'exemple de documentation montre uniquement comment attribuer des valeurs pivots pour un seul modèle. Pour attribuer des valeurs à plusieurs modèles, utilisez la syntaxe suivante :
<code class="php">$user->roles()->sync([ 1 => ['expires' => true], 2 => ['expires' => false], ... ]);</code>
Cette syntaxe vous permet de spécifier des valeurs pivot pour chaque modèle associé à l'aide des paires clé-valeur du tableau.
Considérons un scénario dans lequel vous gérez la saisie d'un formulaire pour attribuer des intervenants à un événement. L'entrée est un tableau d'ID de haut-parleur et vous devez définir la colonne is_speaker dans le tableau croisé dynamique sur true.
Voici comment y parvenir :
<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>
En utilisant array_fill() et array_combine(), vous pouvez créer un tableau de valeurs pivot avec les paires clé-valeur souhaitées, puis les synchroniser avec la relation du modèle.
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!