Оптимизировать ApiResource - PullRequest
       15

Оптимизировать ApiResource

0 голосов
/ 27 ноября 2018

У меня возникают некоторые проблемы при возврате 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()

Однако, этот будет выполнять загрузку отношения ВСЕГДА

...