在一定条件下使用with Count方法 [英] Use withCount method with some condition
本文介绍了在一定条件下使用with Count方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个musics_rate
表和一个musics
表:
musics_rate:
music_id : integer
user_id : integer
rate_type : boolean
音乐模型:
public function rates()
{
return $this->belongsToMany(User::class, 'musics_rate');
}
现在我要按music_rates
WHERErate_type==true
计数(本周创建)对musics
进行排序:
Music::where('created_at','>=', Carbon::parse('last saturday'))
->withCount('rates')
->orderby('rates_count','desc')
->get();
但它按所有比率(阳性比率和负比率)计数排序。
有没有办法只筛选积极的比率。
推荐答案
如果您只需要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();
这篇关于在一定条件下使用with Count方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文