基本上,删除某些东西并让它自动搜索并删除与其连接的所有行和字段,而不是必须手动完成所有,这将是非常好的
例如,使用预先加载,我可以像这样急切加载:
Page::with(array(
'elements',
'elements.drafts',
'elements.content',
'elements.content.drafts'
))->where('myField', '=', $value)->first();
有没有办法为删除操作做类似的事情?类似的东西:
Page::with(array(
'elements',
'elements.drafts',
'elements.content',
'elements.content.drafts'
))->where('myField', '=', $value)->delete();
当然,我已经尝试了上面的代码,但它没有用。我提供它来帮助传达我正在寻找的东西。
答案 0 :(得分:1)
经过一番搜索,我能够弄明白!我远远不是一个SQL专家,所以我甚至不知道要搜索“CASCADE”删除,这就是用SQL术语调用它。
无论如何,我发现了更多信息another StackOverflow post。
我最终不得不在所有关系中设置删除功能。
对于has_many关系,我必须使用the code from the other StackOverflow post。具体来说,就像这样:
// This code is in my elements model, which has_many content
public function delete()
{
foreach($this->content as $content)
{
$content->delete();
}
return parent::delete();
}
但是,我想指出,如果您正在处理 has_one 关系,则必须更改代码,使其看起来像下面的内容。
// This is inside my content model, which has_one draft
public function delete()
{
// delete the single draft
$this->drafts()->delete();
return parent::delete();
}