我正在使用 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();
答案 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