Использовать ресурс API в контроллере - PullRequest
0 голосов
/ 20 апреля 2020

Можно ли использовать ресурс API в контроллере? У меня есть ресурс, который выглядит следующим образом:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
    ];
}

И когда я использую его через HTTP-запросы, в контроллере в качестве ответа, как это:

public function getUser($id)
{
    return new UserResource(User::find($id));
}

Ответ является ожидаемым потому что это целевое использование, верно? * переменная содержит все поля модели User, минуя метод toArray() ресурса.

Я хочу добиться единообразного способа отображения пользовательских полей в приложении (особенно из-за отношения и переименование полей), будь то через API или в виде блейдов.

Я пробовал $user->toArray($request) и $user->jsonSerialize(), но это относится только к первому уровню ресурса. Отношения по-прежнему являются сложным объектом с большим количеством ключей и ощущаются как слишком сложные (более) эти проблемы.

Возможно ли это или есть другой, более подходящий способ сделать это?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вы можете использовать

$users = UserResource::collection(User::all())->resolve();
0 голосов
/ 20 апреля 2020

В итоге я использовал не очень чистое, но функциональное решение:

$users = json_decode(UserResource::collection(User::all())->toJson());

Тем не менее, решения по-прежнему приветствуются:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...