AssetRequirementGroupTreeResource.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Http\Resources\API;
  3. use App\Models\Asset;
  4. use App\Models\RequirementGroup;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Http\Resources\Json\JsonResource;
  7. class AssetRequirementGroupTreeResource extends JsonResource
  8. {
  9. /**
  10. * Transform the resource into an array.
  11. *
  12. * @return array<string, mixed>
  13. */
  14. public function toArray(Request $request): array
  15. {
  16. $tree = $this->buildTree($this->requirementGroups);
  17. //return parent::toArray($request);
  18. return[
  19. 'id'=>$this->id,
  20. 'name'=>$this->name,
  21. 'parent_id' => $this->parent_id,
  22. //'children' =>$this->parent_id == 0 ? RequirementGroupResource::collection($this->children) : [],
  23. 'parent_asset' => new AssetParentResource($this->parent),
  24. 'requirement_group' => $tree,
  25. ];
  26. }
  27. // 创建树状结构的函数
  28. function buildTree($items, $parentId = 0) {
  29. $tree = [];
  30. foreach ($items as $item) {
  31. if ($item['parent_id'] == $parentId) {
  32. $children = $this->buildTree($items, $item['id']);
  33. if ($children) {
  34. $item['children'] = $children;
  35. }
  36. $tree[] = $item;
  37. }
  38. }
  39. return $tree;
  40. }
  41. }