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

时间:2016-02-05 05:40:32

标签: mysql database laravel orm eloquent

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

-----------------
| 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"}]

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

2 个答案:

答案 0 :(得分:1)

$cat = DB::table('test')->select('id''category')
            ->groupBy('category')
            ->get();

然后尝试dd($cat)您将获得所需的输出:)

答案 1 :(得分:0)

测试:: GROUPBY('类别') - >得到();当然它会检索每个类别的单个记录。

检查模型名称是否为test并且表名是test,我想说跟随 laravel convention。