/** * @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()); }); }
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); }); }