Как изменить формат json с помощью API Resource? - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь вставить элемент status в массив, а затем вернуться через ресурс API, но ошибка возврата ресурса API.Я пытаюсь выполнить следующий сценарий, чтобы сделать это

$Games = Game::all();
return new GameResource($Games);

И это возвращается следующим образом:

{
    "data": [
        {
            "id": 1,
            "name": "similique",
            "type_id": 3,
            "created_at": "2018-10-30 11:23:27",
            "updated_at": "2018-10-30 11:23:27"
        }
    ]
}

Я пытаюсь выполнить следующее, чтобы достичь желаемого массива json

$Games = Game::all();
$DataArray = ['status' => 'success', 'data' =>$Games ];
return new GameResource($DataArray);

Но это возвращает ошибку

Call to a member function toBase() on array in fil

Мое желание json массив следующий

{
    "status": "success",
    "data": [
        {
            "id": 1,
            "name": "similique",
            "type_id": 3,
            "created_at": "2018-10-30 11:23:27",
            "updated_at": "2018-10-30 11:23:27"
        }
    ]
}

Ответы [ 3 ]

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

Вы можете попробовать этот код:

$games = Game::get();

return response()->json(new GameResource($games));
0 голосов
/ 13 ноября 2018

В вашем GameResource.php измените метод toArray():

/**
 * Transform the resource into an array.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function toArray($request)
{
    return [
        'data' => $this->collection,
        'status' => 'success', // Here goes the logic which checks for success or failure. However, this depends on what you consider as "success".
   ];
}
0 голосов
/ 13 ноября 2018

данные являются публичной собственностью вашего GameResource? тогда ваш код должен быть

return ['status' => 'success', 'data' => (new GameResource($Games))->data ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...