如何从laravel中删除模型的所有关联关系模型记录?

时间:2018-07-06 15:47:37

标签: eloquent laravel-5.6 php-7.2

我正在使用 laravel 5.6 。我想删除所有与父级一样的子级模型。这意味着如果我删除父项,那么所有子模型记录都应删除自身。

检查此查询。

$d= ParentModel::where('id',2)->with('child_1' ,'child_2','child_3')->first();  

在这里,我不想定义循环和其他任何东西来删除父表和子表的所有记录。只是要删除父表,而其所有子表也应删除自己。

我不知道。是否有可能直接删除所有关联的模型而无需提及。 就像这样。

$d-> child_1->delete();
$d-> child_2->delete();
$d-> child_3->delete();
$d-> delete();

2 个答案:

答案 0 :(得分:0)

您可以为孩子的表迁移添加外键:

$table->unsignedInteger('parent_id');

$table->foreign('parent_id')
    ->references('id')->on('parent_table_name')
    ->onUpdate('cascade')
    ->onDelete('cascade');

现在,当您删除父行时,子行将被自动删除。

有关外键的更多信息:https://laravel.com/docs/5.6/migrations#foreign-key-constraints

答案 1 :(得分:0)

可以。这是删除代码

$parentModel = ParentModel::find($id);  
$parentModel->child_1()->delete(); // return deleted record count
$parentModel->child_2()->delete(); // return deleted record count
$parentModel->child_3()->delete(); // return deleted record count