groupBy() public method

Group an associative array by a field or using a callback.
public groupBy ( callable | string $groupBy, boolean $preserveKeys = false ) : static
$groupBy callable | string
$preserveKeys boolean
return static
Example #1
0
 /**
  * @param Collection $books
  *
  * @return array
  */
 private function group($books)
 {
     $grouped = [];
     foreach ($books->groupBy('id') as $episodes) {
         foreach ($episodes as $key => $episode) {
             $grouped[$key][] = $episode;
         }
     }
     return $grouped;
 }
 /**
  * Authorize a permission resource action based on the incoming request.
  *
  * @param  string $resource
  * @param  array $options
  * @return void
  */
 public function authorizePermissionResource($resource, array $options = [])
 {
     $permissions = $this->resourcePermissionMap();
     $collection = new Collection();
     foreach ($permissions as $method => $ability) {
         $collection->push(new Fluent(['ability' => $ability, 'method' => $method]));
     }
     $collection->groupBy('ability')->each(function ($permission, $ability) use($resource, $options) {
         $this->middleware("can:{$resource}.{$ability}", $options)->only($permission->pluck('method')->toArray());
     });
 }
Example #3
0
 public function testGroupByClosureWhereItemsHaveMultipleGroupsPreservingKeys()
 {
     $data = new Collection([10 => ['user' => 1, 'roles' => ['Role_1', 'Role_3']], 20 => ['user' => 2, 'roles' => ['Role_1', 'Role_2']], 30 => ['user' => 3, 'roles' => ['Role_1']]]);
     $result = $data->groupBy(function ($item) {
         return $item['roles'];
     }, true);
     $expected_result = ['Role_1' => [10 => ['user' => 1, 'roles' => ['Role_1', 'Role_3']], 20 => ['user' => 2, 'roles' => ['Role_1', 'Role_2']], 30 => ['user' => 3, 'roles' => ['Role_1']]], 'Role_2' => [20 => ['user' => 2, 'roles' => ['Role_1', 'Role_2']]], 'Role_3' => [10 => ['user' => 1, 'roles' => ['Role_1', 'Role_3']]]];
     $this->assertEquals($expected_result, $result->toArray());
 }
 protected function groupByDateFormat(Collection $backups, string $dateFormat) : Collection
 {
     return $backups->groupBy(function (Backup $backup) use($dateFormat) {
         return $backup->date()->format($dateFormat);
     });
 }