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 关注
- 145 浏览
添加回答
举报