首页 > 解决方案 > 有没有办法按模型集合中的元素分组?

问题描述

有没有办法按模型按 Laravel 集合中的数据分组?

例子:

Illuminate\Support\Collection {#1743 ▼
  #items: array:5 [▼
    0 => App\Models\Inicijativa {#1789 ▶}
    1 => App\Models\Obavestenje {#1742 ▶}
    2 => App\Models\Obavestenje {#1733 ▶}
    3 => App\Models\Samoprocena {#1672 ▶}
    4 => App\Models\Samoprocena {#1795 ▶}
  ]
}

在这个例子中,我想要 3 个组:

  1. Inicijativa 有 1 件商品
  2. Obavestenje 与 2 项目
  3. Samoprocena 与 2 项目

他们没有我可以区分它们的列。

标签: laraveleloquentlaravel-8

解决方案


一旦你有了一个集合,你就可以使用任何你想要分组的东西:

$grouped = $collection->groupBy(function ($item) { return get_class($item); });

这将根据对每个元素应用的结果对集合元素进行分组get_class。这是允许的,因为结果get_class是一个字符串,指示对象类的完全限定名称


推荐阅读