当前位置: 首页 > 知识库问答 >
问题:

使用groupBy()的每个组的Laravel雄辩返回计数

暴奕
2023-03-14

我想groupBy()使用Laravel Eloquent完成任务。我在网上搜索过,没有找到任何有说服力的东西。有些人将groupBy()查询与查询生成器一起使用,如以下链接

但是我想创建这样的查询风格:

Task::select('id')->groupBy('category_id')->count();

此代码仅返回第一个类别\u id的计数。但是我要计算所有的类别id

共有3个答案

洪飞扬
2023-03-14

我覆盖了模型中的count()方法。可能是这样的:

public function count($string = '*'){
    $tempmodel = new YourModel();
    return $tempmodel ->where('id',$this->id)->where('category_id',$this->category_id)->count($string);
}

这正好提供了我所寻找的count()的行为。

吕霖
2023-03-14

您应该将计数添加到select函数中,并使用get函数执行查询。

Task::select('id', \DB::raw("count(id)"))->groupBy('category_id')->get();

\DB::raw()函数确保在查询中插入字符串,而不需要Laravel修改其值。

淳于熙云
2023-03-14

本机集合替代(按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?