Saltar al contenido

Laravel Eloquent – Adjuntar vs Sincronizar

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *