Extensões para a classe Collection do Laravel. Notavelmente groupByMultiple para agrupar coleções em vários campos em vez de apenas um.
Exemplo:
UM | B | C | D |
---|---|---|---|
foo | bar | baz | baque |
foo | garply | corja | plugue |
foo | bar | corja | baque |
foo | bar | corja | Waldo |
qx | garply | xyzzy | Fred |
qx | graut | garply | quuz |
Chamando myCollection->groupBy(['A', 'B', 'C', 'D']) o resultado seria:
Compatibilidade cruzada A função groupByMultiple é um tanto compatível com o groupBy original do Laravel, pois funciona da mesma maneira se você passar como primeiro argumento algo que não é um array, então assim como groupBy você pode chamá-lo com uma string ou um encerramento. A função apenas coloca o primeiro argumento em um array, se não for um. Se você tentar passar um chamável como um array, então ["Foo", "Bar"] onde Foo::Bar() é um método válido, então é claro que a função groupByMultiple apenas tentará agrupar na chave "Foo" primeiro e "Bar" segundo; esta é a principal incompatibilidade com groupBy(). É claro que você pode passar um array com um chamável nele, então [["Foo", "Bar"]] ou [["Foo", "Bar"], "Baz"] funcionaria perfeitamente. Para pessoas que já usam groupBy, será muito fácil mudar para esta função.