【发布时间】:2019-01-29 06:20:13
【问题描述】:
我正在尝试使用 laravel 5.7 删除 3 个关系表上的数据,当我在 2 个关系表上尝试它时,它运行良好,但是当我在 3 个关系表中尝试它时,它不起作用。
这是我的桌子的样子:
表 1:group_access
|----|------------| |编号 |组名 | |----|------------| | 67 |测试 | |----|------------|表 2:fa_group_access
|----|-----------------|--------| |编号 | group_access_id |姓名 | |----|-----------------|--------| | 1 | 67 |约翰 | |----|-----------------|--------|表 3:survey_group_access
|----|-----------------|----------------| |编号 | group_access_id |代码调查 | |----|-----------------|----------------| | 1 | 67 | SF-001 | |----|-----------------|----------------|这是我在控制器中删除数据的功能:
public function destroy($id)
{
$group = Groups::findOrFail($id);
if($group->delete())
{
Survey_group_access::where('group_access_id', $id)->get();
FA_Group_Access::where('group_access_id', $id)->get();
return response()->json(['status'=>'success']);
}
}
我得到一个像这样的错误 sql:
SQLSTATE[23000]:[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]DELETE 语句与 REFERENCE 约束冲突 “survey_group_access_group_access_id_foreign”。发生了冲突 在数据库“aetra2”,表“dbo.survey_group_access”,列 'group_access_id'。 (SQL:从 [group_access] 中删除 [id] = 67)
如何解决这个错误?
【问题讨论】:
-
显示这 3 个表的迁移文件
-
从 table1 中删除数据时,您是否要从 table2 和 table 3 中删除数据?这可以通过删除时的级联来实现。
-
@InzamamIdrees 我在帖子中更新了我的模型
-
@SarojShrestha 是的,我想从表 1 中删除数据,表 2 和表 3 将使用表 1 中的参考 ID 自动删除
-
您只需添加 foriegn key with cascade on delete,然后只需删除 group_access 行,它会自动删除其他不同表上的相关记录。
标签: php sql-server laravel laravel-5