Laravel 4的Eloquent ORM中attach()
和sync()
之间有什么区别?我试着环顾四周但找不到任何东西!
答案 0 :(得分:89)
attach():
示例:
$user = User::find(1); $user->roles()->attach(1);
同步()强>
与attach()
方法类似。 sync()
也用于附加相关模型。但主要的区别是:
示例:
<强> USER_ROLE 强>
id user_id role_id 1 2 1 2 2 5 3 2 2
$user->roles()->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
答案 1 :(得分:23)
使其更简单:
attach
函数仅将记录添加到数据透视表。
sync
函数用新记录替换当前记录。这对更新模型非常有用。
示例:
假设您有一个已创建的帖子,其中附有许多标签,其中标签ID为 [1,2,3] 。
用户可以更新帖子及其标签。
用户将向您发送新的标签ID [3,4,5]。
如果您使用sync
功能,帖子的新标签将仅为 [3,4,5] 。
但如果您使用attach
功能,帖子的新标签将为 [1,2,3,4,5] 。