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

求更好的实现方法

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
use Illuminate\Support\Facades\DB;

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

??

3周前 评论
use Illuminate\Support\Facades\DB;

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

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

3周前 评论

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

3周前 评论

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