Eloquent关系同步也会删除吗?

时间:2014-06-13 14:44:38

标签: laravel-4 relational-database eloquent

更新模型并同步关系时,如果我没有传入已存在的所有ID,是否会删除该关系?

2 个答案:

答案 0 :(得分:12)

您决定:sync有第二个参数,默认为true并负责分离:

$model->relationship()->sync([1,2,3]);

$model->relationship()->sync([4,5,6]); // attached [4,5,6], detached [1,2,3]
$model->relationship()->getRelatedIds(); // [4,5,6]

// but:
$model->relationship()->sync([4,5,6], false); // attached [4,5,6], detached []
$model->relationship()->getRelatedIds(); // [1,2,3,4,5,6]

答案 1 :(得分:0)

答案是肯定的。我找不到任何事实上说明的文件。

假设您有2个表:"作者"和"书籍",使用数据透视表" book_authors"。

创建新作者时:

$author_id =2;
$author->books()->sync(array(1,4,5,15));

现在,您在该数据透视表中有4个条目" book_authors":

author_id  book_id
2          1
2          4
2          5
2          15

现在更新:

$author_id =2;
$author->books()->sync(array(1,15));

现在" book_authors"是:

author_id  book_id
    2          1
    2          15