Maison  >  Article  >  développement back-end  >  Comment synchroniser les relations de modèles avec des champs pivots supplémentaires dans Laravel ?

Comment synchroniser les relations de modèles avec des champs pivots supplémentaires dans Laravel ?

DDD
DDDoriginal
2024-10-19 17:58:30215parcourir

How to Sync ModelRelationships with Additional Pivot Fields in Laravel?

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!

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