with usar relations multiple metodo funcion como attach php laravel laravel-4 eloquent relationship

php - usar - Laravel Eloquent-Attach vs Sync



multiple attach laravel (2)

¿Cuál es la diferencia entre attach() y sync() en el ORM Eloquent de Laravel 4? ¡Intenté mirar alrededor pero no pude encontrar nada!


Para hacerlo aún más simple:

La función de attach solo agrega registros a la tabla Pivot.

La función de sync 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 las identificaciones de las etiquetas son [1,2,3] .

Y el usuario tiene la capacidad de actualizar la publicación y sus etiquetas.

El usuario le enviará las nuevas identificaciones de etiquetas [3,4,5].

Si usa la función de sync , las nuevas etiquetas de la publicación serán [3,4,5] solamente.

Pero si usa la función de attach , las nuevas etiquetas de la publicación serán [1, 2, 3, 4, 5] .


adjuntar():

  • Insertar modelos relacionados cuando se trabaja con relaciones de muchos a muchos
  • No se espera ningún parámetro de matriz

Ejemplo:

$user = User::find(1); $user->roles()->attach(1);

sincronizar ()

Similar al método attach() . sync() también se usa para adjuntar modelos relacionados. Sin embargo la principal diferencia es:

  • El método de sincronización acepta una matriz de ID para colocar en la tabla dinámica
  • En segundo lugar, lo más importante es que el método de sincronización eliminará los modelos de la tabla si el modelo no existe en la matriz e insertará nuevos elementos en la tabla dinámica.

Ejemplo:

rol del usuario

id user_id role_id 1 2 1 2 2 5 3 2 2

$user->roles()->sync(array(1, 2, 3));

La operación anterior eliminará:

id user_id role_id 2 2 5

E inserte role_id 3 en la tabla.

user_role table

id user_id role_id 1 2 1 3 2 2 4 2 3