Laravel过滤由多对多关系组成

时间:2017-12-06 14:32:27

标签: laravel filter many-to-many relationship 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);
    });
});

但没有成功。

我如何按流派过滤季节?

1 个答案:

答案 0 :(得分:1)

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

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