Extensiones para la clase Collection de Laravel. En particular, groupByMultiple para agrupar colecciones en varios campos en lugar de solo uno.
Ejemplo:
A | B | do | D |
---|---|---|---|
foo | bar | baz | ruido sordo |
foo | gruñón | corge | enchufe |
foo | bar | corge | ruido sordo |
foo | bar | corge | valdo |
qux | gruñón | xyzzy | fred |
qux | graul | gruñón | pregunta |
Al llamar a myCollection->groupBy(['A', 'B', 'C', 'D']) el resultado sería:
Compatibilidad cruzada La función groupByMultiple es algo compatible con groupBy original de Laravel en el sentido de que funciona de la misma manera si pasas como primer argumento algo que no es una matriz, así que al igual que groupBy puedes llamarlo con una cadena o un cierre. La función simplemente coloca el primer argumento en una matriz si no lo es. Si intenta pasar un invocable como una matriz, entonces ["Foo", "Bar"] donde Foo::Bar() es un método válido, entonces, por supuesto, la función groupByMultiple simplemente intentará agrupar en la clave "Foo" primero y "Bar" segundo; esta es la principal incompatibilidad con groupBy(). Por supuesto, puede pasar una matriz con un invocable, por lo que [["Foo", "Bar"]] o [["Foo", "Bar"], "Baz"] funcionarían bien. Para las personas que ya utilizan groupBy, será muy fácil cambiar a esta función.