Вы пытаетесь получить свойство модели из объекта коллекции.Ошибка генерируется, потому что коллекция не содержит свойства userId
.Вам нужно перебрать данные, чтобы получить их.
Но это не то, чего вы пытаетесь достичь.Вам нужен ответ json только с этими полями.Итак, прежде всего вы должны изменить свой запрос или отобразить свою коллекцию, чтобы выбрать только эти поля ... Так как вам нужен JSON Response, самый простой способ достичь вашей цели - использовать Api resources
Итак, вы объявляете свой ресурс:
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Player extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'userId' => $this->userId,
'userName' => $this->userName,
'userVote' => $this->userVote,
];
}
}
и возвращаете этот ресурс как коллекцию из вашего контроллера:
<?php
namespace App\Http\Controllers;
use App\Http\Resources\PlayerResource;
// [...]
public function index(Request $request)
{
$room = $request->input('sessionId');
$currentPlayers = Player::where('userSession', $room)->get();
return PlayerResource::collection($currentPlayers);
}
и Laravel сделает всю магию дляВы кодируете результат в формате JSON.