2016-10-03 3 views
2

私はこれをやらなければならなかったとは信じられません。そして今、私はそれを達成する方法を実際には分かっていません。基本構造はParenthasManyChild)です。 Childエントリを持たないすべてのParentエントリを定期的に照会して削除したいと考えています。子エントリを持たない親エントリに対する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

関連する問題