laravel 7将对象数组插入数据库
这是我的数据laravel 7将对象数组插入数据库,laravel,laravel-7,Laravel,Laravel 7,这是我的数据 answers: [ {text: "dsfdsfjds", correct: "false"} {text: "asjdkjsa", correct: "true"} {text: "sadasdsad", correct: "false"} } 我试过的 $answers[] = $request->answers; $question
answers: [
{text: "dsfdsfjds", correct: "false"}
{text: "asjdkjsa", correct: "true"}
{text: "sadasdsad", correct: "false"}
}
我试过的
$answers[] = $request->answers;
$question = Question::create([
'question' => $request->question,
'date' => $request->date
]);
if($question) {
foreach($answers as $ans) {
$anss = Answer::create([
'question_id' => $question->id,
'text' => $ans->correct,
'correct' => $ans->correct,
]);
}
}
我得到这个错误
Trying to get property 'correct' of non-object"
请指导我如何将数据插入数据库。我想您的问题在于这一行:
$answers[] = $request->answers;
请删除括号,然后重试:
$answers = $request->answers;
根据您的描述,我假设answers是一个json对象数组。您应该解码json对象以访问其属性。将其添加到foreach循环的开头
$json_decoded_answer = json_decode($ans);
然后你就可以这样做了
$anss = Answer::create([
'question_id' => $question->id,
'text' => $json_decoded_answer->correct,
'correct' => $json_decoded_answer->correct,
]);
尝试获取非对象的属性“正确”
试着这样做
$answers = $request->answers;
$question = Question::create([
'question' => $request->question,
'date' => $request->date
]);
if($question) {
foreach($answers as $ans) {
$anss = Answer::create([
'question_id' => $question->id,
'text' => $ans['text'],
'correct' => $ans['correct'],
]);
}
}
我刚刚将此
$answer[]
更改为$answer
并使用了一个数组而不是object您是否转储了$ans
以查看它是什么类型的?您使用的是带键的数组,在循环中使用$answer作为$key=>$valuevar\u转储($ans);也使用这个$ans['correct']而不是$ans->->correct转储($ans)
dd($request->answers);请将其添加到问题中