Example #1
0
 public function applyOnCollection(CollectionInterface $collection)
 {
     $newCollection = null;
     foreach ($this->getAppliedGroups() as $group) {
         if ($group['type'] == 'db') {
             continue;
         }
         if (!$newCollection) {
             $newCollection = $collection->groupBy(function ($item) use($group) {
                 return $item->{$group['field']};
             });
         } else {
             $newCollection = $newCollection->each(function ($groupItems) use($group) {
                 return (new Collection($groupItems))->groupBy(function ($item) use($group) {
                     return $item->{$group['field']};
                 });
             }, true);
         }
     }
     return $newCollection ?? $collection;
 }