2017-12-06 6 views
1

私は映画とセリデータベースを書いています。私はジャンル別にフィルタリングできるようにしたい。関係の多対多の関係によるラーベルフィルタ

映画の部分はかなり簡単です。私の映画モデルでは、ジャンルスコープを追加することができました。

public function scopeGenres($query, $genres) 
{ 
    return $query->whereHas('genres', function($q) use ($genres){ 
     $q->whereIn('genres.genre_id', $genres); 
    }); 
} 

ここではシリーズモデルに含めたいと思います。問題:私はシリーズを表示せず、シリーズを表示し、シリーズにはジャンルが付いています。

ようなものだ:

Season belongsTo Serie morphToMany Genre 

私はすでにそれが好き作ってみました:

$seasons->with('serie' => function($query) use ($genre_ids){ 
    $query->whereHas('genres', function($q) use ($genre_ids){ 
     $q->whereIn('genres.genre_id', $genres); 
    }); 
}); 

が、成功しません。

ジャンルはどのようにフィルタリングできますか?

+0

with機能を交換する必要がありますか?結果がありません?エラー? – Devon

答えて

1

あなただけの何の成功はまさに意味しない何が別のwhereHas

$seasons->whereHas('serie', function($query) use ($genre_ids) { 
    $query->whereHas('genres', function($q) use ($genre_ids){ 
     $q->whereIn('genres.genre_id', $genres); 
    }); 
}); 
+0

あまりにも簡単です...完璧に動作します!私はその考えを思いつきませんでした。ありがとう! – Ronon