До сих пор я возвращал себе список серверов по: return Server::all()->keyBy('id')
. Теперь я хотел бы также использовать ресурс, чтобы контролировать, какие столбцы будут использоваться совместно. return new ServerCollection(Server::all()->keyBy('id'));
. Однако это не работает. Как это сделать правильно?
Edit Теперь я возвращаю все серверы в массиве, который имеет ключ из идентификатора сервера.
Контроллер:
public function index()
{
return Server::all()->keyBy('id');
}
Теперь я хотел бы начать использовать ресурсы и вернуть только некоторые данные. Итак, я преобразовал свой скрипт в это:
Контроллер:
public function index()
{
return ServerResource::collection(Server::all()->keyBy('id'));
}
Ресурс:
class Server extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name
];
}
}
Данные, которые я получаю:
{"data":[{"id":1,"name":"server 1"},{"id":2,"name":"server 2"},{"id":3,"name":"server 3"}]}
Я бы хотел, чтобы данные возвращались в виде массива с ключами.
{"data":["1": {"id":1,"name":"server 1"}, "2": {"id":2,"name":"server 2"}, "3": {"id":3,"name":"server 3"}]}