gpt4 book ai didi

mysql - 在 Laravel Eloquent/Fluent 中,有没有办法删除一行以及通过关系与其连接的所有内容?

转载 作者:行者123 更新时间:2023-11-29 13:56:25 24 4
gpt4 key购买 nike

基本上,删除某些内容并让它自动搜索并删除与其连接的所有行和字段,而不是必须手动执行所有操作,这真是太好了。

例如,使用预加载,我可以像这样预加载:

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();

当然,我已经尝试过上面的代码,但它不起作用。我提供它是为了帮助传达我正在寻找的内容。

最佳答案

经过一番搜索,我终于明白了!我远不是一个 SQL 专家,所以我什至不知道如何搜索“CASCADE”删除,这就是 SQL 术语中所说的。

无论如何,我找到了更多信息another StackOverflow post .

我最终不得不在所有关系中设置删除功能。

对于 has_many 关系

对于 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 关系

但是,我确实想指出,如果您正在处理 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();
}

关于mysql - 在 Laravel Eloquent/Fluent 中,有没有办法删除一行以及通过关系与其连接的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15795742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com