为了账号安全,请及时绑定邮箱和手机立即绑定

在控制器中的 json 数组中显示数据库条目(Laravel / PHP)

在控制器中的 json 数组中显示数据库条目(Laravel / PHP)

PHP
智慧大石 2022-01-24 10:18:17
我正在尝试在我的 PlayerController 中编写一个索引函数,因此我的 Vue 组件能够以这种形式创建一个包含 userId、userName、userVote 的数组:[{userId:1, userName:Jimmy,userVote:7},{}。 ..]我有一个 Players 表和 Session 表,因为我的 Player.userSession 和 Session.sessionId 具有相同的属性,我正在使用 Laravel 的请求来获取此信息,使用具有 Session 的 ID 的其他类创建一个变量并获取所有参与其中的用户的房间。一切都应该保存&&返回。到目前为止,这是我的代码: public function index(Request $request)    {        $room = $request->input('sessionId');        $currentPlayers = Player::where('userSession', $room)->get();        $userId = $currentPlayers->userId;        $userName = $currentPlayers->userName;        $userVote = $currentPlayers->userVote;        return json_encode([        'userId' => $userId,        'userName' => $userName,        'userVote' => $userVote]);    }但现在它说:“此集合实例上不存在属性 [userId]。”https://pasteboard.co/IyJyUZ0.png https://pasteboard.co/IyJypj5.png
查看完整描述

1 回答

?
MMTTMM

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 格式编码结果做所有的事情。


查看完整回答
反对 回复 2022-01-24
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信