繁体   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