亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在控制器中的 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 關注
  • 163 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號