0

基本上,删除某些内容并让它自动搜索并删除与其相关的所有行和字段,而不是必须手动完成所有这些,这将是非常好的。

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

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

当然,上面的代码我试过了,还是不行。我提供它是为了帮助传达我正在寻找的东西。

4

1 回答 1

1

经过更多的搜索,我能够弄清楚!我是一名 SQL 专家,所以我什至不知道要搜索“CASCADE”删除,这就是它在 SQL 术语中的名称。

无论如何,我在另一个 StackOverflow 帖子中找到了更多信息。

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

对于 has_many 关系

对于 has_many 关系,我不得不使用其他 StackOverflow 帖子中的代码。具体来说,像这样:

// 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();
}
于 2013-04-03T19:29:51.127 回答