Mysql Laravel在一个查询中具有不同条件的雄辩多重计数
我有如下代码:Mysql Laravel在一个查询中具有不同条件的雄辩多重计数,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,我有如下代码: $sendto_hikkou1 = Guest::where('mypage_id', $mypage) ->where('snd_to_hikkou_id', 1)->count(); $sendto_hikkou2 = Guest::where('mypage_id', $mypage) ->where('snd_to_hikkou_id', 2)->count(); $sendto_hi
$sendto_hikkou1 = Guest::where('mypage_id', $mypage)
->where('snd_to_hikkou_id', 1)->count();
$sendto_hikkou2 = Guest::where('mypage_id', $mypage)
->where('snd_to_hikkou_id', 2)->count();
$sendto_hikkou3 = Guest::where('mypage_id', $mypage)
->where('snd_to_hikkou_id', 3)->count();
如何在一个查询中写入此内容 使用
groupBy
在一个查询中获取所有计数,如下所示
$sendto_hikkou = Guest::where('mypage_id', $mypage)
->whereIn('snd_to_hikkou_id',[1,2,3])
->groupBy('snd_to_hikkou_id')
->select('snd_to_hikkou_id',DB::raw("count(*) as hikkou_count"))
->get();
您必须使用DB facade而不是模型。 选择id字段,然后计数,按id分组,然后获取。
我现在不能测试 这里是我找到的解决方案,但是@C2486的答案要好得多
$sendto_hikkou = Guest::where('mypage_id', $mypage)
->select(
\DB::raw('COUNT(IF( snd_to_hikkou_id = 1, snd_to_hikkou_id, NULL)) AS item1'),
\DB::raw('COUNT(IF( snd_to_hikkou_id = 2, snd_to_hikkou_id, NULL)) AS item2'),
\DB::raw('COUNT(IF( snd_to_hikkou_id = 3, snd_to_hikkou_id, NULL)) AS item3'),
)
->get();
谢谢,我刚刚找到了解决办法!而且它使用了DB facade ^^太好了,我刚刚找到了解决方案,但是你的代码要好得多!Tks。但是我还有一个问题,snd_to_hikkou_id=1->没有结果,所以它不会返回总数=0;我能解决这个问题吗?请分享你已经找到的解决方案,我们在这里学习。哦,对不起,我现在就分享