我正在使用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