thomhurks/laravel-collection-extensions

Laravel 集合类的扩展。特别是groupByMultiple,它可以在多个字段上对集合进行分组,而不仅仅是单个字段。

v1.0.1 2017-03-21 17:20 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:40:51 UTC


README

Laravel 集合类的扩展。特别是groupByMultiple,它可以在多个字段上对集合进行分组,而不仅仅是单个字段。

示例

通过调用 myCollection->groupBy(['A', 'B', 'C', 'D']),结果将变为

  • foo
    • bar
      • baz
        • thud [foo, bar, baz, thud]
      • corge
        • thud [foo, bar, corge, thud]
        • waldo [foo, bar, corge, waldo]
    • garply
      • corge
        • plugh [foo, garply, corge, plugh]
  • qux
    • garply
      • xyzzy
        • fred [quz, garply, xyzzy, fred]
    • grault
      • garply
        • quuz [qux, grault, garply, quuz]

跨兼容性 groupByMultiple 函数在某种程度上与 Laravel 原始的 groupBy 兼容,即如果您将非数组传递为第一个参数,则它将按相同的方式工作。所以就像 groupBy 一样,您可以用字符串或闭包调用它。函数只是将第一个参数放入数组中,如果它不是一个数组。如果您尝试将可调用项作为数组传递,例如 ["Foo", "Bar"](其中 Foo::Bar() 是一个有效的方法),那么当然 groupByMultiple 函数将尝试首先按 "Foo" 键进行分组,然后是 "Bar";这是与 groupBy() 的主要不兼容之处。当然,您可以将包含可调用项的数组传递,例如 [["Foo", "Bar"]] 或 [["Foo", "Bar"], "Baz"] 将正常工作。对于已经使用 groupBy 的人来说,这个函数将很容易切换。