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);
});
});
我正在编写电影和系列数据库。我想让按流派过滤成为可能。
对于电影部分来说,这很容易。在我的电影模型中,我可以添加一个流派范围:
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);
});
});