[英]laravel5.2 delete model with all relations
我现在的模型有一些关系。 如果模型将被删除,我该如何删除它们? 此查询不会删除相关模型,只会删除“主模型”。
我使用此代码调用:
$checks = Check::where('created_at','<=', Carbon::now()
->subHours(3))
->with('checks')
->with('results')
->delete();
这是我当前的 Check 模型
protected static function boot(){
parent::boot();
static::deleting(function($check) {
$check->checks()->delete();
$check->results()->delete();
});
}
结果和检查包含每个检查的多个条目。 这意味着使事情清楚:
一张支票可能有 n 个CheckResult
,也可能有 n 个CheckProcedure
(我当然也会删除所有这些)。
尝试使用deleted
而不是deleting
:
protected static function boot(){
parent::boot();
static::deleted(function($check)
{
$check->checks()->delete();
$check->results()->delete();
});
}
还尝试从返回的集合中逐个解析对象:
foreach($check->checks as $check_object) {
$check_object->delete();
}
希望这可以帮助。
就像评论中已经指出的那样,您正在查询构建器而不是实际相关模型上执行删除。 IE
你应该有
$check->checks->delete();
$check->results->delete();
而不是你目前拥有的。
此外,假设您使用的是关系数据库,正确的做法是使用外键和级联删除操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.