Laravel - 一对多关系上的保存方法的对立面是啥?
Posted
技术标签:
【中文标题】Laravel - 一对多关系上的保存方法的对立面是啥?【英文标题】:Laravel - What is the opposite of the save method on a one-to-many relationship?Laravel - 一对多关系上的保存方法的对立面是什么? 【发布时间】:2016-04-01 16:53:52 【问题描述】:假设我正在建立一个一对多关系的关联,就像这样
$artwork->views()->save($view);
我将如何删除此关联?
【问题讨论】:
【参考方案1】:detach()
是多对多关系,你想要的是dissociate()
。根据文档:
$user->account()->dissociate();
$user->save();
https://laravel.com/docs/5.1/eloquent-relationships#inserting-related-models
【讨论】:
我认为这是正确的,但是如何只删除一个关联的项目? 好问题。目前无法尝试自己,但也许可以尝试从另一个模型中分离出来,看看是否可行? 我走了很长一段路,最终将另一个模型的artifact_id设置为NULL,这实际上是做同样的事情。这是正确的答案。谢谢@Joel Hinz【参考方案2】:您正在展示一个创建关联的代码。我猜你的意思是删除:
App\Views::destroy(245);
https://laravel.com/docs/5.1/eloquent#deleting-models
【讨论】:
【参考方案3】:扩展@Joel Hinz 的回答,只从关系中删除一项如何:
$artwork->views()->first()->delete();
您也可以使用where
或latest
等进行选择。
【讨论】:
以上是关于Laravel - 一对多关系上的保存方法的对立面是啥?的主要内容,如果未能解决你的问题,请参考以下文章