What is the difference between attach() and sync() in Laravel 4\'s Eloquent ORM? I\'ve tried to look around but couldn\'t find anything!
attach():
Example:
$user = User::find(1);
$user->roles()->attach(1);
sync():
Similar to the attach() method, the sync() method is used to attach related models. However, the main differences are:
sync() accepts an array of IDs to place on the pivot tableExample:
user_role
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));
The above operation will delete:
id user_id role_id 2 12 5
And insert role_id 3 to the table.
user_role table
id user_id role_id 1 12 1 3 12 2 4 12 3