*/ public function toArray(Request $request): array { $groupObjects = $this->getGroupObjects(); $items = []; foreach ($this->resource as $approval) { $items[] = [ 'id' => $approval->id, 'status' => $approval->status, 'object_type' => $approval->object_type, 'object_id' => $approval->object_id, 'node_level' => $approval->node_level, 'created_by' => new UserProfileResource($approval->createdBy), 'object' => [ 'id' => $approval->object_id, 'name' => data_get($groupObjects, sprintf("%s.%s", $approval->object_type, $approval->object_id)), ] ]; } return $items; } protected function getGroupObjects(): array { $groupObjects = []; foreach(collect($this->resource->items())->groupBy("object_type") as $objectType => $items) { $approvalObjectType = ApprovalObjectType::from($objectType); $groupObjects[$objectType] = $approvalObjectType ->modelBuilder() ->whereIn("id", array_column($items->toArray(), "object_id")) ->pluck($approvalObjectType->nameField(), "id"); }; return $groupObjects; } }