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()就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持IIS7站长之家。

PHP利用分组查询groupby,Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy...相关推荐

  1. Laravel 的 Eloquent ORM学习

    创建模型 首先,创建一个 Eloquent 模型,生成的模型通常放在 app 目录中,但你可以通过 composer.json 随意地将它们放在可被自动加载的地方.所有的 Eloquent 模型都继承 ...

  2. php 查看 实例 的方法,php – 从Laravel 5.1中的通用数据库查询中获取Eloquent模型的实例...

    我有不同关系的模型.假设我的Entry模型属于供应商,所以通常我的模型文件中有一个supplier()方法. 到目前为止一切都那么好,当我有一些像Entry :: find(1) – >供应商这 ...

  3. mysql 分组查出来横向展示_实战MySql查询

    一.mysql查询的五种子句 where子句(条件查询):按照"条件表达式"指定的条件进行查询. group by子句(分组):按照"属性名"指定的字段进行分组 ...

  4. 【整理】Laravel中Eloquent ORM 关联关系的操作

    Laravel中Eloquent ORM 关联关系的操作 关联数据 定义关联关系 一对一 <?php class User extends Model{// 获取关联到用户的手机public f ...

  5. Laravel之Eloquent ORM访问器调整器及属性转换

    一.查询构建器的get方法 查询构建器的get方法返回了一个集合$users = App\User::where('active', 1)->get(); foreach ($users as ...

  6. mysql子查询设置_什么是mysql子查询?如何利用子查询进行过滤?

    子查询 MySQL 4.1引入了对子查询的支持,所以要想使用本章描述的SQL,必须使用MySQL 4.1或更高级的版本. SELECT语句 是SQL的查询.迄今为止我们所看到的所有 SELECT 语句 ...

  7. SQL语法之分组函数,分组查询(进阶5)and连接查询(sql92语法进阶6)

    SQL语法体系学习笔记 SQL语法之基础查询(进阶1)and条件查询(进阶2) SQL语法之排序查询(进阶3)and常见函数(进阶4) SQL语法之分组函数,分组查询(进阶5)and连接查询(sql9 ...

  8. Laravel 5.1 文档攻略 —— Eloquent:模型关系

    简介 其实大家都知道,数据表之间都是可以关联的,前面讲过了,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: E ...

  9. mysql查询是否用index_如何查看sql查询是否用到索引(mysql)

    alter database sync default character set utf8mb4;//修改数据库的字符集alter table sync.credit_creditchannel d ...

最新文章

  1. HDU - 6118 度度熊的交易计划(最大费用可行流)
  2. linux apf防火墙安装配置
  3. 如果有什么想不开或者放不下的话,看看这里吧!(摘于网络)
  4. java 图片滑动验证码_java实现图片滑动验证(包含前端代码)
  5. 第六章jQuery选择器
  6. Linux串口通信编程
  7. php公众号模板推送开发教程,微信公众号之模板推送
  8. 演讲实录 :某大型股份制商业银行的容器化探索之路
  9. 高效实用GitHub关键字搜索~~干货干货~~
  10. 深度|人脸图像的技术原理及在电商业务中的应用
  11. [转] 网站性能优化之------------- 数据库及服务器架构篇
  12. MFRC522与单片机测试过程及代码
  13. 解压tar.xz方法
  14. 缺陷修改实践——replace函数的运用|思考?
  15. deepin添加启动图标(快捷方式)
  16. python什么是关键字参数_Python函数关键字参数
  17. 计算机中 递归 的概念,递归是什么?关于递归的详细介绍
  18. BZOJ P2150 部落战争
  19. 4826: [Hnoi2017]影魔
  20. 新一代L3虚拟网络接入解决方案(畅想)

热门文章

  1. send/receive h264/aac file/data by rtp/rtsp over udp/tcp
  2. 零基础学习 Python 之前期准备
  3. Linux环境安装redis
  4. 简谈Java的join()方法(转)
  5. Android开发---开发文档翻译
  6. 商业价值:谷歌眼中的搜索未来
  7. 奇门遁甲鸣法 第四章 正格
  8. WinAPI: MoveWindow - 改变窗口的位置与大小
  9. Win10升级到最新版本
  10. Mac Crack路欧词典(所有版本)