簡體   English   中英

Laravel - 將 json 保存到數據庫列 vs 調用成員 function save() on array

[英]Laravel - save json to database column vs Call to a member function save() on array

我正在獲取 Laravel API 中的數據,我想將其添加到表中某一列內的 JSON 中。 但是我收到一個錯誤。 你能幫我把我的JSON存入數據庫欄嗎?

在我的用戶表中,我有一個名為 answer_history 的列,其中包含 JSON

[
  [
    {
      "quizID": 1,
      "questionID": 1,
      "selectedAnswer": "Green",
      "correctAnswer": false
    },
    {
      "quizID": 1,
      "questionID": 2,
      "selectedAnswer": "Skin",
      "correctAnswer": false
    },
    {
      "quizID": 1,
      "questionID": 3,
      "selectedAnswer": "Pup",
      "correctAnswer": true
    }
  ]
]

這是我更新專欄的代碼

/**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\User  $user
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $answers = User::find($id)->answer_history;
        $newAnswers = $request->answerHistory;
        $answers[] = $newAnswers;
        $answers->save();
        return $answers;
    }

我收到這個 json

  [
    {
      "quizID": 1,
      "questionID": 1,
      "selectedAnswer": "White",
      "correctAnswer": false
    },
    {
      "quizID": 1,
      "questionID": 2,
      "selectedAnswer": "Keratin",
      "correctAnswer": true
    },
    {
      "quizID": 1,
      "questionID": 3,
      "selectedAnswer": "Cub",
      "correctAnswer": false
    }
  ]

如果我評論 $answer->save(),我的瀏覽器-.network->response 中的響應是

[
  [
    {
      "quizID": 1,
      "questionID": 1,
      "selectedAnswer": "Green",
      "correctAnswer": false
    },
    {
      "quizID": 1,
      "questionID": 2,
      "selectedAnswer": "Skin",
      "correctAnswer": false
    },
    {
      "quizID": 1,
      "questionID": 3,
      "selectedAnswer": "Pup",
      "correctAnswer": true
    }
  ],
  [
    {
      "quizID": 1,
      "questionID": 1,
      "selectedAnswer": "White",
      "correctAnswer": false
    },
    {
      "quizID": 1,
      "questionID": 2,
      "selectedAnswer": "Keratin",
      "correctAnswer": true
    },
    {
      "quizID": 1,
      "questionID": 3,
      "selectedAnswer": "Cub",
      "correctAnswer": false
    }
  ]
]

如果沒有,我會收到此錯誤

“調用數組上的成員 function save()”

我在我的 model 中添加了 cast

    protected $casts = [
        'email_verified_at' => 'datetime',
        'answer_history' => 'array'
    ];

這是因為變量 $answers 是您的 model 的值。您需要將其保留為您的 model

嘗試這個

public function update(Request $request, $id)
    {
        $answers = User::find($id);
        $newAnswers = $request->answerHistory;
        $answers->answer_history[] = $newAnswers;
        $answers->save();
        return $answers;
    }

Function save() 來自User model 而不是值...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM