Это мой PlayerController, модель Player & Session и ресурс.
Я хочу использовать входные данные (sessionId из SessionsTable), чтобы выбрать пользователя из комнаты с тем же идентификатором (userSession) и вернуть массив вэтот формат: [{userId: 1, userName: stacki, userVote: 8}, {...}, ...]
Я уже просил [здесь] [1] добиться этого, и теперь я застрялс этой ошибкой.Что я должен изменить, чтобы решить эту проблему?Простое добавление -> first () не решает мою проблему, мне нужно более одной записи.
namespace App\Http\Controllers;
use App\Player;
use Illuminate\Http\Request;
use App\Http\Resources\Players as PlayerResource;
class PlayerController extends Controller
{
public function index(Request $request)
{
$room = $request->input('sessionId');
$currentPlayers = Player::where('userSession', $room)->get();
return PlayerResource::collection($currentPlayers);
}
public function create()
{ }
public function update()
{ }
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Player extends Model
{
protected $fillable = [];
public $sortable = [
'userId',
'userName',
'userVote'
];
public function sessions()
{
return $this->hasMany('App\Session');
}
public function players(){
return $this->belongsToMany('App\Session');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Session extends Model
{
protected $fillable = [];
public function user(){
return $this->belongsToMany('App\Player');
}
public function creator()
{
return $this->hasOne('App\Player', 'userId');
}
}
class Players extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'userId' => $this->sessionId,
'userName' => $this->userName,
'userVote' => $this->userVote
];
}
}
`
[1]: /12792361/otobrazhenie-zapisei-bd-v-massive-json-v-kontrollere-laravel-php