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

 更新时间:2019年10月23日 17:30:17   作者:seek-x2y  
今天小编就为大家分享一篇Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy(),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

相关文章

  • Laravel6.18.19如何优雅的切换发件账户

    Laravel6.18.19如何优雅的切换发件账户

    这篇文章主要给大家介绍了关于Laravel6.18.19如何优雅的切换发件账户的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Laravel6.18.19具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • php实现utf-8转unicode函数分享

    php实现utf-8转unicode函数分享

    这篇文章主要介绍了php实现utf-8转unicode函数分享,需要的朋友可以参考下
    2015-01-01
  • PHP错误处理函数

    PHP错误处理函数

    在 PHP 中,默认的错误处理很简单。一条错误消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的消息
    2016-04-04
  • Zend Framework教程之Application和Bootstrap用法详解

    Zend Framework教程之Application和Bootstrap用法详解

    这篇文章主要介绍了Zend Framework教程之Application和Bootstrap用法,结合实例形式详细分析了Application和Bootstrap的功能,使用技巧与相关注意事项,需要的朋友可以参考下
    2016-03-03
  • Symfony2框架学习笔记之HTTP Cache用法详解

    Symfony2框架学习笔记之HTTP Cache用法详解

    这篇文章主要介绍了Symfony2框架HTTP Cache用法,结合实例形式分析了Symfony框架HTTP缓存的相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • PHP cURL初始化和执行方法入门级代码

    PHP cURL初始化和执行方法入门级代码

    这篇文章主要介绍了PHP cURL初始化和执行方法入门级代码,本文直接给出代码示例,代码中包含详细注释,需要的朋友可以参考下
    2015-05-05
  • CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)

    CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)

    这篇文章主要介绍了CI框架常用经典操作类,结合实例形式总结分析了CI框架URL、路由、伪静态、分页、session、验证码等相关操作类与使用技巧,需要的朋友可以参考下
    2016-11-11
  • php在线打包程序源码

    php在线打包程序源码

    把里面的代码保存为php格式的文件 然后丢到你的站点下面 打开……
    2008-07-07
  • PHP的运行机制与原理(底层)

    PHP的运行机制与原理(底层)

    php看着很简单,但是要深入php的运行机制与原理也不是件容易的事,我们除了会使用之外还要知道它底层的工作原理,这样才能灵活的运用,对php运行机制感兴趣的朋友一起学习吧
    2015-11-11
  • 浅谈thinkphp5 instance 的简单实现

    浅谈thinkphp5 instance 的简单实现

    本篇文章主要介绍了浅谈thinkphp5 instance 的简单实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论