我有一个musics_rate
表和一个musics
表:
musics_rate:
music_id : integer
user_id : integer
rate_type : boolean
音乐模型 :
public function rates()
{
return $this->belongsToMany(User::class, 'musics_rate');
}
现在,我要按musics
个对music_rates
进行计数的rate_type==true
排序(在本周创建):
Music::where('created_at','>=', Carbon::parse('last saturday'))
->withCount('rates')
->orderby('rates_count','desc')
->get();
但是它按所有比率(正比率和负比率)计数排序。
有没有办法只过滤正利率。
答案 0 :(得分:2)
如果您只希望music
为正的rate
模型:
Music::whereHas('rates', function ($q) {
$q->where('rate_type', true);
})
->where('created_at', '>=', Carbon::parse('last saturday'))
->withCount('rates')
->orderby('rates_count', 'desc')
->get();
如果要使用所有music
模型,但只加载正数rates
:
Music::with([
'rates' => function ($q) {
$q->where('rate_type', true);
}
])
->where('created_at', '>=', Carbon::parse('last saturday'))
->withCount('rates')
->orderby('rates_count', 'desc')
->get();