Maison >développement back-end >tutoriel php >Comment attribuer des valeurs de tableau croisé dynamique supplémentaires dans Laravel lors de la synchronisation d'un tableau ?

Comment attribuer des valeurs de tableau croisé dynamique supplémentaires dans Laravel lors de la synchronisation d'un tableau ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-19 17:52:02875parcourir

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

Synchronisation d'un tableau avec des champs pivots supplémentaires dans Laravel

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 ?

Attribuer des valeurs pivots à plusieurs modèles

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.

Exemple avec Dynamic Valeurs pivots

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn