【发布时间】:2023-04-09 09:30:01
【问题描述】:
我有一个一对多的模型:一个明星可以有多张照片。
当我更新我的星星时,我可以添加或删除图片。当我保存星星时,我删除数据库中的所有图片,并保存新的。像这样:
$star->pictures()->delete();
$star->pictures()->saveMany($picturesAdded);
但我认为这些操作之间没有提交,因为只保存了新图片。所有已经在数据库中然后被删除的图片将不会被保存。 我认为 Eloquent 会记住它删除、插入或更新的内容,然后它会提交所有这些内容。
所以我不知道如何继续......我只是想与数据库同步。
$star->push() 能做到我想要的吗?它是删除不再存在的关系,还是只是插入/更新新关系?
如果第一个问题是真的,那该怎么做呢?
我试过了:
$star->pictures = Collection::make($picturesAdded);
$star->push();
但我有一个错误:
Unknown column 'pictures' in 'field list'
希望你能帮忙
编辑
也许可以举个例子:
我得到了带有图片的星星 [1,2,3,4]。我编辑了星星,现在我得到了 [1,2,5,6]。 如果我做我写的(集合删除然后 saveMany),我现在在我的数据库中得到 [5,6] 而我想要 [1,2,5,6]
【问题讨论】:
标签: php laravel orm laravel-5 eloquent