Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()


Posted in PHP onOctober 23, 2019

Laravel 5.5

Linux mint 18

PHPStorm

最近刚玩Laravel,手册源码还没来得及看完就跃跃欲试做了个小项目,其中有个需求是分组查询数据库中的一个字段并返回每个分组中的数量,还是去翻手册(手册确实够简单):

groupBy 和 having 方法可用来对查询结果进行分组。having 方法的用法和 where 方法类似:
$users = DB::table('users')
   ->groupBy('account_id')
   ->having('account_id', '>', 100)
   ->get();

网上去查,发现一个轮子

$user_info = DB::table('usermetas')
    ->select('browser', DB::raw('count(*) as total'))
    ->groupBy('browser')
    ->get();

再去查手册

## 指定一个 Select 子句#

当然,你并不会总是想从数据表中选出所有的字段。这时可使用 select 方法自定义一个 select 子句来查询指定的字段:

$users = DB::table('users')->select('name', 'email as user_email')->get();

## 原始表达式#

有时候你可能需要在查询中使用原始表达式。这些表达式将会被当作字符串注入到查询中,所以要小心避免造成 SQL 注入攻击!要创建一个原始表达式,可以使用 DB::raw 方法:

$users = DB::table('users')
     ->select(DB::raw('count(*) as user_count, status'))
     ->where('status', '<>', 1)
     ->groupBy('status')
     ->get();

可惜总是爱折腾,不想着用点奇迹淫巧就对不起自己这手艺人,于是有了:

$sql = Data::raw('count(*) as value');

$obj = self::whereBetween('modified',[$begin,$end])->select('city as name',$sql)
            ->groupBy('city')
            ->get()
            ->toArray();

代码也不客气了,直接撂了挑子:

毛病出在这句身上:

$sql = Data::raw('count(*) as value');

我用了个Data(Model),返回的是个Builder对象,而此处却要一个字符串,所以改回了

$sql = DB::raw('count(*) as value');

此时$sql是个string,至于有木有办法在此处用Model,慢慢研究吧,任重道远!

参考:

Laravel Eloquent groupBy() AND also return count of each group

以上这篇Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
数字转英文
Dec 06 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
php中url函数介绍及使用示例
Feb 13 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
windows下apache搭建php开发环境
Aug 27 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 PHP
laravel 执行迁移回滚示例
Oct 23 #PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 #PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 #PHP
laravel 出现command not found问题的解决方案
Oct 23 #PHP
关于laravel框架中的常用目录路径函数
Oct 23 #PHP
laravel 实现根据字段不同值做不同查询
Oct 23 #PHP
Laravel修改验证提示信息为中文的示例
Oct 23 #PHP
You might like
xml+php动态载入与分页
2006/10/09 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
js判断密码强度的方法
2020/03/18 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
zookeeper python接口实例详解
2018/01/18 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Python装饰器语法糖
2019/01/02 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
python中if及if-else如何使用
2020/06/02 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
乐观大学生的自我评价
2014/01/10 职场文书
委托书如何写
2014/08/30 职场文书
财政局个人总结
2015/03/04 职场文书
回复函范文
2015/07/14 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python