laravel 4 - tablas - ¿La sincronización de relación Eloquent también elimina?
order by eloquent (2)
Al actualizar un modelo y sincronizar una relación, si no paso todos los ID que ya existen, ¿se eliminará esa relación?
La respuesta es Sí, lo hace. No pude encontrar ninguna documentación que de hecho indicara eso.
digamos que tiene 2 tablas: "autores" y "libros", con una tabla dinámica "book_authors".
al crear un nuevo autor:
$author_id =2;
$author->books()->sync(array(1,4,5,15));
Ahora tiene 4 entradas en esa tabla dinámica "book_authors":
author_id book_id
2 1
2 4
2 5
2 15
Ahora actualiza:
$author_id =2;
$author->books()->sync(array(1,15));
ahora "book_authors" es:
author_id book_id
2 1
2 15
Usted decide: la sync
tiene el segundo parámetro que se establece como true
y es responsable de la separación:
$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]