laravel-4 - relations - table pivot laravel




Est-ce que la synchronisation de la relation Eloquent est également supprimée? (2)

La réponse est Oui c'est le cas. Je n'ai trouvé aucune documentation qui l'indiquait.

Disons que vous avez 2 tables: "auteurs" et "livres", avec un tableau croisé "book_authors".

lors de la création d'un nouvel auteur:

$author_id =2;
$author->books()->sync(array(1,4,5,15));

Vous avez maintenant 4 entrées dans ce tableau pivotant "book_authors":

author_id  book_id
2          1
2          4
2          5
2          15

Maintenant, mettez à jour:

$author_id =2;
$author->books()->sync(array(1,15));

maintenant "book_authors" est:

author_id  book_id
    2          1
    2          15

Lors de la mise à jour d'un modèle et de la synchronisation d'une relation, si je ne transmets pas tous les identifiants existants, cette relation sera-t-elle supprimée?


Vous décidez: sync a le 2ème paramètre qui est par défaut à true et est responsable du détachement:

$model->relationship()->sync([1,2,3]);

$model->relationship()->sync([4,5,6]); // attached [4,5,6], detached [1,2,3]
$model->relationship()->getRelatedIds(); // [4,5,6]

// but:
$model->relationship()->sync([4,5,6], false); // attached [4,5,6], detached []
$model->relationship()->getRelatedIds(); // [1,2,3,4,5,6]






eloquent