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 相关文章推荐
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
yii2简单使用less代替css示例
Mar 10 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
php链式操作的实现方式分析
Aug 12 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 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
推荐一篇入门级的Class文章
2007/03/19 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
PHP数组实例总结与说明
2011/08/23 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
简单实现python聊天程序
2018/04/01 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
医学专业职业生涯规划范文
2014/02/05 职场文书
大型会议接待方案
2014/03/01 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android