В чем разница между attach()
и sync()
в Eloquent ORM от Laravel 4? Я пытался осмотреться, но ничего не мог найти!
прикреплять():
Пример:
$ user = Пользователь :: find (1); $ User-> роли () -> присоединять (1);
синхронизации ()
Аналогично методу attach()
. sync()
также используется для присоединения связанных моделей. Однако основное различие заключается в следующем:
Пример:
USER_ROLE
id user_id role_id 1 2 1 2 2 5 3 2 2
$ user-> role () -> sync (array (1, 2, 3));
Вышеуказанная операция удалит:
id user_id role_id 2 2 5
И вставьте role_id 3
в таблицу.
таблица user_role
id user_id role_id 1 2 1 3 2 2 4 2 3
Чтобы сделать его еще проще:
Функция attach
только добавляет записи в таблицу Pivot.
Функция sync
заменяет текущие записи новыми записями. Это очень полезно для обновления модели.
Пример:
Предполагая, что у вас есть созданная почта, на которой есть много тегов, где ID тегов [1,2,3] .
И пользователь имеет возможность обновлять сообщение и его теги.
Пользователь отправит вам новый идентификатор тегов [3,4,5].
Если вы используете функцию sync
, новые теги сообщения будут [3,4,5] .
Но если вы используете функцию attach
, новые теги сообщения будут [1,2,3,4,5] .