Laravel API-ресурсы только запрашиваемые данные - PullRequest
1 голос
/ 13 января 2020

В соответствии со стандартами json: api клиент может запросить, чтобы конечная точка возвращала в ответ только указанные c поля, поэтому у меня в контроллере есть следующий код:

public function index(Request $request)
{
    $members = Member::query();

    if ($request->query('fields')) {
        $members->select($request->query('fields'));
    }

    return MemberResource::collection($members->paginate());
}

но так как ресурс имеет все поля, он все равно будет возвращать другие поля со значениями null.

Я ищу чистый способ по-прежнему использовать ресурсы API , но получаю только запрашиваемые поля, похожие на $this->whenloaded() что-то вроде $this->whenQueried()

1 Ответ

2 голосов
/ 14 января 2020

Улучшенная версия ответа Йосселя.

public function whenExists($field, $value = null)
{
  return $this->when(array_key_exists($field, $this->resource->toArray()), $value ?? $this->$field);
}

таким образом я могу использовать поле как значение

"first_name" => $this->whenExists("first_name"),

вместо

"first_name" => $this->whenExists("first_name", $this->first_name),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...