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();

求更好的实现方法

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案
use Illuminate\Support\Facades\DB;

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

??

1年前 评论
use Illuminate\Support\Facades\DB;

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

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

1年前 评论

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

1年前 评论

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