如何使用 Laravel 合并两个计数

Posted

技术标签:

【中文标题】如何使用 Laravel 合并两个计数【英文标题】:How to combine two counts using Laravel 【发布时间】:2021-05-29 05:16:28 【问题描述】:

将 Laravel 8 用于宁静的 API。 数据库中的一个表有以下字段

report_date 、 supervisor_id 和 supervisor_note

我想检索一个结果,该结果计算任何给定日期的报告数量,并计算 supervisor_notes 字段中的所有 null 值。

我正在使用以下 Laravel 代码:

$reports=DB::table('reports')
        ->where('supervisor_id','like', '%'.$supervisor_id.'%')
        ->select('report_date', DB::raw('count(*) as total'))
        ->groupBy('report_date')
        ->get();

我不知道如何将代码与同一个查询中的第二个计数条件结合起来

【问题讨论】:

您使用的不是 Eloquent,而是查询生成器。 Eloquent 看起来像 Supervisor::find($supervisor_id)->reports()->select('report_date', DB::raw('count(*) as total'))->groupBy('report_date')->get(); 对不起,我更新了我没有名为 Supervisor 的模型我有报告模型的问题 【参考方案1】:

你可以在这里使用条件聚合

$reports=DB::table('reports')
        ->where('supervisor_id','=', $supervisor_id)
        ->select([
            'report_date',
            DB::raw('count(*) as total'),
            DB::raw('sum(case when supervisor_note is null or supervisor_note = "" then 1 else 0 end) as notes_total')
        ])
        ->groupBy('report_date')
        ->get();

另外,如果supervisor_id 是整数列并且$supervisor_id 也包含整数值,则使用= 之类的精确整数匹配,而不是使用like 子句进行字符串比较

【讨论】:

以上是关于如何使用 Laravel 合并两个计数的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel中合并两个相似的对象

有重复项时如何合并两个计数向量化器?

如何在 laravel 5.8 中合并两个 sql 表

如何合并两个模型集合并使其成为一个分页然后将其发送到 Laravel 中的视图

如何使用 Laravel 的流畅查询构建器选择计数?

如何在 PostgreSQL 中合并两个查询?