Laravel中如何用聚合函数计算总数(laravel,编程语言)

时间:2024-05-02 12:40:18 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    Laravel%E4%B8%AD%E5%A6%82%E4%BD%95%E7%94%A8%E8%81%9A%E5%90%88%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E6%80%BB%E6%95%B0

假如有电子邮件订阅服务,希望显示订阅者的详情统计页面如下显示

出于本文的目的,假设我们有一个subscribers包含以下格式数据的数据库表:

大部分人的做法:

上面这样肯定会产生五条语句,这样做肯定是很不好。所以尝试优化一下,会使用另一个方法解决执行多条语句的问题:

上面先获取全部订阅者数据,然后再对这个结果集进行条件统计,使用集合.模型多条数据查询返回Illuminate\Database\Eloquent\Collection这样的方法,只适合再数据量不大的时候使用,如果我们的应用程序有数千或数百万订阅者,处理的时间会很慢,并且会使用大量内存。

条件聚合

实际上有一种非常简单的方法可以查询计算这些总数。诀窍是将条件放在聚合函数中。下面是一个 SQL 示例:

以下是在 Laravel 中使用查询构建器编写此查询:

Boolean 列(字段)

表迁移创建 boolean 字段 , model定义属于转换 此处不用model为代码示例,可自行替换为model

如果使用boolean当字段列,将更容易,比如要查询subscribers表中的用户是否为拥有不同的角色权限。假设subscribers表中有is_adminis_treasureris_editoris_manager、字段

这是因为聚合函数count忽略null列。与PHP中false || null返回false不同,在SQL(以及JavaScript)中,它返回null。基本上,如果A可以强制为真,则A || B返回值A;否则,返回B

这段话如果没理解,就看我下面说明:
使用laravel的boolean列,实际数据表里字段为tinyint,值为0(false)1(true), 比如
小明的is_admin字段为1(true),count(is_admin or null)可以看作表示为(1 or null),这A为真 返回A,最终sql为count(is_admin)
反之则是如is_admin字段为0(false),最终sql为count(null),则忽略此列

本文:Laravel中如何用聚合函数计算总数的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何实现一个Laravel查询过滤器下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18