首页 > 作文

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

更新时间:2023-04-08 08:35:45 阅读: 评论:0

laravel 5.5

linux mint 18

phpstorm

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

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

网上去查,发现一个轮子

$ur_info四川211大学名单 = db::table('urmetas')    ->lect('browr', db::raw('count(*) as total'))    ->groupby('browr')    ->get();

再去查手册

## 指定一个 lect 子句#当然,你并不会总是想从数据表中选出所有的字段。这时可使用 lect 方法自定义一个 lect 子句来查询指定的字段:$urs = db::table('urs')->lect('name', 'email as ur_email')->get();## 原始表达式#有时候你可能需要在查询中使用原始表达式。这些表达式将会被当作字符串注入到查询中,所以要小心避免造成 sql 注入攻击!要创建一个原始表达式,可以使用 db::raw 方法:$urs = db::table('urs')     ->lect(db::raw('count(*) as ur_count, status'))     ->where('status', '<>', 1)     ->groupby('status')     ->get();

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

$sql = data::raw('count(*) as value');$obj = lf::wherebetween('modified',[$begin,$end])->lect('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()就是www.887551.com分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持www.887551高中语文必读名著.com。

本文发布于:2023-04-08 08:35:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/245a392e617126b72f6abbad4d0e4f09.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy().doc

本文 PDF 下载地址:Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy().pdf

标签:表达式   方法   字段   手册
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图