我目前的模特有一些关系。我怎样才能删除它们,如果模型被删除? 此查询不会删除相关模型,只会删除“主模型”。
我使用此代码调用:
sp_procoption
这是我当前的Check模型
$checks = Check::where('created_at','<=', Carbon::now()
->subHours(3))
->with('checks')
->with('results')
->delete();
结果和检查包含每项检查的多个条目。这意味着要明确:
一张支票可能有n protected static function boot(){
parent::boot();
static::deleting(function($check) {
$check->checks()->delete();
$check->results()->delete();
});
}
,可能有n CheckResult
(我当然也会删除所有支票)。
答案 0 :(得分:1)
尝试使用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();
}
希望这有帮助。
答案 1 :(得分:0)
正如评论中已经指出的那样,您正在查询构建器上执行删除而不是实际的相关模型。即。
你应该
$check->checks->delete();
$check->results->delete();
而不是你现在拥有的。
此外,假设您使用关系数据库,正确的方法是使用foreign keys with cascade delete action。