我想groupBy()
使用Laravel Eloquent完成任务。我在网上搜索过,没有找到任何有说服力的东西。有些人将groupBy()查询与查询生成器一起使用,如以下链接
但是我想创建这样的查询风格:
Task::select('id')->groupBy('category_id')->count();
此代码仅返回第一个类别\u id
的计数。但是我要计算所有的类别id
。
我覆盖了模型中的count()
方法。可能是这样的:
public function count($string = '*'){
$tempmodel = new YourModel();
return $tempmodel ->where('id',$this->id)->where('category_id',$this->category_id)->count($string);
}
这正好提供了我所寻找的count()
的行为。
您应该将计数添加到select函数中,并使用get函数执行查询。
Task::select('id', \DB::raw("count(id)"))->groupBy('category_id')->get();
\DB::raw()
函数确保在查询中插入字符串,而不需要Laravel修改其值。
本机集合替代(按php分组,而不是mysql)。这是一个不错的选择,当你有集合作为变量已经分配。当然在大多数情况下不如mysql分组最优。
$tasks->groupBy('category_id')->map->count();
我有一个表,其中包括一列浏览器版本。我只是想从记录集中知道每种浏览器有多少种。所以,我需要这样结束:总记录:10;InternetExplorer 8:2;铬25:4;火狐20:4。(总计10) 这是我的两便士: 当然,它只包含3个浏览器,而不是每个浏览器的数量。我该怎么做呢?
我有一个表,其中包含,除其他列,一列浏览器版本。我只是想从记录中知道,每种类型的浏览器有多少。 我的代码是: 输出: 我想分组所有的浏览器,没有像这样的浏览器版本:
我有两张桌子。 产品品牌 我试图用最多的产品返回前十大品牌型号。 我试过了。 但是它不返回孔模型,只返回 品牌 计数 我也试过 但是我得到了错误: SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“brands.id”(SQL:选择count(*)作为从whereid=
嘿,伙计们,我是拉威尔的新朋友。我有这张桌子 我如何能够获取每个科目的is_correct列计数? 谢谢伙计们!
始终使用Laravel Elotent而不是原始SQL有什么好处吗? 我有一个习惯,首先在phpMyAdmin中编写SQL来检查关系,然后将其翻译成雄辩的ORM。 有时,翻译成雄辩的ORM是痛苦和耗时的,尤其是从长而复杂的SQL查询进行翻译。与使用雄辩的ORM相比,我能够用SQL快速编写。
如何将以下查询转换为Laravel4雄辩ORM?