【问题标题】:How to do a groupBy() for a single item from each group in Laravel ORM如何为 Laravel ORM 中每个组中的单个项目执行 groupBy()
【发布时间】: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"}]

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

【问题讨论】:

    标签: mysql database laravel orm eloquent


    【解决方案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()。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多