[英]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.