Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-19 17:58:30
original
301 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal