用户与报告有很多关系。删除用户后,我想从report_user
数据透视表中删除所有他们的报告和数据。
这是我的delete()
方法:
public function delete(Request $request)
{
$user=User::where('id',$request->id);
if($user)
{
$user->delete();
return response()->json(['status'=>true]);
}
}
手动我可以使用以下方法删除用户报告:
foreach($user->reports as $report)
{
$report->delete();
}
如果有更好的方法可以删除相关的模型数据,我想知道。
答案 0 :(得分:1)
您可能希望设置users表以引用报表中的外键。这样,您可以在删除用户时利用->onDelete('cascade')
方法。 See the documentation here
答案 1 :(得分:0)
您可以使用 detach()方法删除相关模型,例如:
$user->reports()->detach();
所以你的完整代码将是这样的:
public function delete(Request $request)
{
$user=User::where('id', $request->id);
if($user)
{
$user->delete();
$user->reports()->detach();
return response()->json(['status'=>true]);
}
}
有关detach()方法的更多信息: