如何为 Laravel ORM 中每个组中的单个项目执行 groupBy()

Posted

技术标签:

【中文标题】如何为 Laravel ORM 中每个组中的单个项目执行 groupBy()【英文标题】:How to do a groupBy() for a single item from each group in Laravel ORM 【发布时间】:2016-05-15 00:15:27 【问题描述】:

我试图从每个类别中获取一个项目。这是我的测试表:

-----------------
| id | category |
-----------------
|  1 | image    |
-----------------
|  2 | link     |
-----------------
|  3 | image    |
-----------------
|  4 | link     |
-----------------

如果我做table('test')->groupBy('category')->get();,返回值是这样的:

["id":1,"category":"image",
  "id":3,"category":"image",
  "id":2,"category":"link",
  "id":4,"category":"link"]

如果我这样做table('test')->groupBy('category')->first();,则返回:

["id":1,"category":"image"]

但我想要的是每个类别中的单个项目,如下所示:

["id":1,"category":"image",
  "id":3,"category":"link"]

我如何实现这一目标? (我想避免循环,因为我的表会变得很大——很多类别)。谢谢!

【问题讨论】:

【参考方案1】:
$cat = DB::table('test')->select('id''category')
            ->groupBy('category')
            ->get();

然后尝试dd($cat) 你会得到你需要的输出:)

【讨论】:

【参考方案2】:

Test::groupBy('category')->get();当然它会检索每个类别的单个记录。

检查模型名是否为test,表名是否为tests,我想说follow laravel 约定。

【讨论】:

哎呀,我有Test::all()->groupBy('category')->get()。非常感谢!

以上是关于如何为 Laravel ORM 中每个组中的单个项目执行 groupBy()的主要内容,如果未能解决你的问题,请参考以下文章

如何为路由组中的所有请求设置标头

如何为每个循环发出不同的元组并在风暴螺栓的单个字段方法中声明?

python数据结构-如何为元组中的每个元素命名

如果它出现在MYSQL中的组中,如何为每个值返回'true / false'?

如何为Laravel中的每个会话设置不同的到期时间?

python_如何为元组中每个元素命名