Расширения для класса Collection в Laravel. В частности, groupByMultiple для группировки коллекций по нескольким полям, а не по одному.
Пример:
А | Б | С | Д |
---|---|---|---|
фу | бар | Баз | стук |
фу | искривленный | корж | вилка |
фу | бар | корж | стук |
фу | бар | корж | Уолдо |
qux | искривленный | киззи | Фред |
qux | Грат | искривленный | куз |
Вызов myCollection->groupBy(['A', 'B', 'C', 'D']) приведет к следующему результату:
Перекрестная совместимость Функция groupByMultiple в некоторой степени совместима с оригинальной функцией groupBy в Laravel, поскольку она работает одинаково, если вы передаете в качестве первого аргумента что-то, что не является массивом, поэтому, как и в случае с groupBy, вы можете вызывать ее со строкой или замыканием. Функция просто помещает первый аргумент в массив, если он им не является. Если вы попытаетесь передать вызываемый объект в виде массива, например ["Foo", "Bar"], где Foo::Bar() является допустимым методом, то, конечно, функция groupByMultiple просто попытается сгруппироваться по ключу "Foo". первый и «Бар» второй; это основная несовместимость с groupBy(). Конечно, вы можете передать массив с вызываемым объектом, поэтому [["Foo", "Bar"]] или [["Foo", "Bar"], "Baz"] будут работать нормально. Людям, уже использующим groupBy, переключиться на эту функцию будет очень легко.