У меня возникают некоторые проблемы при возврате ApiResources, потому что я не могу понять, как избежать перегрузки отношений.
В моем UserResource, например, у меня есть:
<?php
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'role_id' => $this->role_id,
'role' => new RoleResource($this->whenLoaded('role')),
'group_ids' => $this->groups->pluck('id')->toArray(), // here are the problems
'groups' => GroupResource::collection($this->whenLoaded('groups')),
];
При загрузке одного идентификатора отношения все в порядке, потому что $this->role_id
- это свойство, которое уже есть в модели.При использовании $this->whenLoaded('role')
он будет загружать отношения условно, это здорово!
Проблема : при загрузке отношений многие ко многим я не могу установить эту «условную» нетерпеливую загрузку.
Когда я размещу:
'groups' => GroupResource::collection($this->whenLoaded('groups'))
Он загрузит ManyToMany Relation условно, круто!
НО Iхотел бы иметь массив идентификаторов с:
'group_ids' => $this->groups->pluck('id')->toArray()
Однако, этот будет выполнять загрузку отношения ВСЕГДА