Laravel 按关系的多对多关系过滤

Laravel filter by many to many relation of a relation

我正在编写电影和系列数据库。我想让按流派过滤成为可能。

对于电影部分来说,这很容易。在我的电影模型中,我可以添加一个流派范围:

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);
    });
});

但没有成功。

如何按流派筛选剧季?

您只需将 with 函数替换为另一个 whereHas

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