Php 删除所有关系,然后保存另一个-仅保存新关系

Php 删除所有关系,然后保存另一个-仅保存新关系,php,laravel,orm,laravel-5,eloquent,Php,Laravel,Orm,Laravel 5,Eloquent,我有一个一对多的模型:一个明星可以有多张照片 当我更新我的星号时,我可以添加或删除图片。当我保存星号时,我会删除数据库中的所有图片,然后保存新图片。像这样: $star->pictures()->delete(); $star->pictures()->saveMany($picturesAdded); 但我认为这些操作之间没有提交,因为只保存了新图片。所有已经在数据库中的图片,然后被删除,将不会保存在所有。 我认为雄辩在内存中保留它删除、插入或更新的内容,然后提交所有

我有一个一对多的模型:一个明星可以有多张照片

当我更新我的星号时,我可以添加或删除图片。当我保存星号时,我会删除数据库中的所有图片,然后保存新图片。像这样:

$star->pictures()->delete();
$star->pictures()->saveMany($picturesAdded);
但我认为这些操作之间没有提交,因为只保存了新图片。所有已经在数据库中的图片,然后被删除,将不会保存在所有。 我认为雄辩在内存中保留它删除、插入或更新的内容,然后提交所有这些内容

所以我不知道如何继续。。。我只是想和数据库同步

$star->push()是否能够满足我的要求?它是删除不再存在的关系,还是只是插入/更新新关系

如果第一个问题是真的,那么怎么做呢

我试过:

$star->pictures = Collection::make($picturesAdded);
$star->push();
但我有一个错误:

Unknown column 'pictures' in 'field list'
希望你能帮忙

编辑

也许可以举个例子:

我得到一颗有照片的星星[1,2,3,4]。我编辑了星星,现在我得到了[1,2,5,6]。 如果我按照我写的那样做(集合删除,然后保存很多),我现在就进入了我的数据库[5,6],而我想[1,2,5,6]

看看
sync()
方法
sync()
使该关系的唯一项目是您传入的项目。语法是
$model->relationship()->sync($ids)
,其中
$ids
是一个id数组

因此,假设
$picturesAdded
是一个ID数组,您需要做的就是

$star->pictures()->sync($picturesAdded); 

文档可以在
$model->relationship()->sync($ids)
中的@dramixx中找到,
$ids
数组也可以采用
[$id1=>['pivot\u col'=>'pivot\u val\u 1']、$id2=>['pivot\u col=>'pivot\u val\u 2'].]
的形式,这将允许您同步数据透视表data@kishanterry我不知道。酷。谢谢你指出这一点。欢迎。它在您提供的文档链接中,特别是多对多关系>为方便而同步部分确实,同步方法适用于多对多关系,但在我的例子中,这是一对多关系。为了更好地理解,我在帖子中添加了一个例子