Esta inquietud se puede resolver de diversas formas, pero en este caso te dejamos la que para nosotros es la solución más completa.
Solución:
adjuntar():
- Insertar modelos relacionados cuando se trabaja con relaciones de muchos a muchos
- No array se espera el parámetro
Ejemplo:
$user = User::find(1);
$user->roles()->attach(1);
sincronizar ():
Similar a attach()
método, el sync()
El método se utiliza para adjuntar modelos relacionados. Sin embargo, las principales diferencias son:
sync()
acepta un array de ID para colocar en la tabla dinámica- En segundo lugar, lo más importanteel método de sincronización eliminará los datos de la tabla dinámica si el modelo no existe en el arraye inserte solo los elementos nuevos en la tabla dinámica.
Ejemplo:
rol del usuario
id user_id role_id 1 12 1 2 12 5 3 12 2
$user = User::find(12);
$user->roles()->sync(array(1, 2, 3));
La operación anterior eliminará:
id user_id role_id 2 12 5
e insertar role_id 3
a la mesa.
tabla de roles de usuario
id user_id role_id 1 12 1 3 12 2 4 12 3
Para hacerlo aún más simple:
los attach
La función solo agrega registros a la tabla dinámica.
los sync
La función reemplaza los registros actuales con los nuevos registros. Esto es muy útil para actualizar un modelo.
Ejemplo:
Suponiendo que tiene una publicación creada que tiene muchas etiquetas adjuntas donde están las ID de las etiquetas [1,2,3].
Y el usuario tiene la capacidad de actualizar la publicación y sus etiquetas.
El usuario le enviará las nuevas ID de etiquetas. [3,4,5].
Si usas el sync
función, las nuevas etiquetas de la publicación serán [3,4,5] solamente.
Si usas el attach
función, las nuevas etiquetas de la publicación serán [1,2,3,4,5].
Aquí tienes las comentarios y calificaciones
Al final de la web puedes encontrar los informes de otros creadores, tú de igual forma tienes el poder dejar el tuyo si te apetece.