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



我正在使用laravel 5.6。 我想删除所有子模型,只要父模型。 这意味着如果我删除父模型,那么所有子模型记录都应该删除自己。

检查此查询。

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

在这里,我不想为删除父表和子表的所有记录定义循环和其他任何内容。 只想删除父表及其所有子表也应该删除 self。

我不知道。 是否可以直接删除所有相关模型而不提及。 像这样。

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

是的,你可以。这是删除代码

$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

您可以将外键添加到孩子的表迁移中:

$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

最新更新