1 回答

TA貢獻1869條經驗 獲得超4個贊
您正在嘗試從集合對象中檢索模型屬性。拋出錯誤是因為集合不包含userId屬性。您必須迭代數據才能獲得它。
但這不是你想要達到的目標。您想要一個僅包含這些字段的 json 響應。因此,首先您必須更改查詢或映射您的集合以僅選擇這些字段...由于您需要 JSON 響應,因此實現目標的最簡單方法是使用Api 資源
所以你聲明你的資源:
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 格式編碼結果做所有的事情。
- 1 回答
- 0 關注
- 163 瀏覽
添加回答
舉報