groupby 分组后 count 计算总数的问题

1. 运行环境

1). 当前使用的 Laravel 版本?

“illuminate/database”: “v9.52.15”,

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.0.2

2. 问题描述?

groupby分组后链接调用count计算总条数,只返回了分组后第一条记录数作为总数
生成的sql语句有问题

3. 您期望得到的结果?

groupby 分组后 count 计算总数的问题

4. 您实际得到的结果?

最终返回结果是 1
groupby 分组后 count 计算总数的问题

目前解法:

这种写法有问题,会多走一次全部的查询
$count = StatisticsTargetEveryday::where($where)->groupBy($group)->get()->count();

这种写法感觉不太优雅,distinct还需要传入固定参数
$count = StatisticsTargetEveryday::where($where)->distinct(‘target’)->count();

求更好的实现方法

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
use Illuminate\Support\Facades\DB;

$c = DB::query()
        ->from(
            Model::query()
                ->selectRaw('count(*) c')
                ->groupBy('cate_id'),
            'temp'
        )
        ->count();
7个月前 评论
cevin (作者) 7个月前
DogLoML 7个月前
cevin (作者) 7个月前
DogLoML 7个月前
讨论数量: 8
随波逐流

??

7个月前 评论
use Illuminate\Support\Facades\DB;

$c = DB::query()
        ->from(
            Model::query()
                ->selectRaw('count(*) c')
                ->groupBy('cate_id'),
            'temp'
        )
        ->count();
7个月前 评论
cevin (作者) 7个月前
DogLoML 7个月前
cevin (作者) 7个月前
DogLoML 7个月前

直接把数据库给客户,让他自己分组计数

7个月前 评论

第一种写法后面的count应该是用laravel的集合类,不是走的数据库查询

7个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!