2016-10-03 22 views
2

我不敢相信我從來沒有這樣做過,現在我意識到我實際上並不知道如何實現它。基本結構是ParenthasManyChild)。我想定期查詢所有Parent沒有Child條目的條目並刪除它們。如何爲沒有子條目的父條目構建Laravel雄辯查詢?

我認爲這開始於Parent::with('child')->where...->delete()。但是,我如何完成這項工作呢?我需要使用DB::raw來代替嗎?

如果您想進一步幫助我...我有Parent型號中的功能isExpired()。我真的只想刪除isExpired()TRUE的條目。

回答

3

您正在尋找doesntHave。這將給所有沒有孩子條目的父母。並刪除它們。

$parents=Parent::doesntHave('child')->get(); 
foreach($parents as $parent) 
{ 
    $parent->delete(); 
} 

在父模型的關係:

public function child() 
{ 
    return $this->hasMany('App\Child'); 
} 
+0

感謝。在你回答之前,我確實發現了同樣的事情,並且它運行良好。雖然這不是特別容易找到! – jreikes