我的模型中有一个scope
方法,其中包含belongsToMany关系;我坚持指出如何在另一个地方使用范围方法过滤多个数据。我的代码是
CoversAlbum.php
public function genres()
{
return $this->belongsToMany(CoversGenre::class,'covers_track_genres');
}
CoversGenre.php
public function albums()
{
return $this->belongsToMany(CoversAlbum::class,'covers_album_genres');
}
CoversAlbum.php中的Scope方法
public function scopeActive($query)
{
return $query->whereHas('genres', function ($q) {
$q->where('is_present', true)();
});
}
我希望所有枢轴covers_genre_id
存在。请建议我如何实现它。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用has
方法:
public function scopeActive($query)
{
return $query->has('genres');
}
然后您可以这样:
CoversAlbum::active()->get();
这将返回包含至少一个CoversAlbum
的{{1}}的列表。
有关更多信息:在https://laravel.com/docs/5.8/eloquent-relationships#querying-relations下的CovertsGenre
下浏览
答案 1 :(得分:0)
您可以使用wherePivot
方法
public function scopeActive($query)
{
return $this->genres()->wherePivot('is_present', true);
}