我正在开发一个QA应用程序,我需要根据需要动态地为问题添加多个答案。 为此,我发送了一个带有问题和答案的对象。
question={
'question_text':'what is your name',
'answers':[
{'answer_text':'some answer','isCorrect':'1'},
{'answer_text':'some answer','isCorrect':'1'},
{'answer_text':'some answer'} // answer may or may not have isCorrect key
]
}
在服务器端,我有两个表或迁移1表示问题,1表示答案。答案表有三个字段question_id
,answer_text' and
是正确的'。 question_id
是答案表中问题的外键。
存储我正在做的对象是
$question_text=Input::get('question_text');
$answers=Input::get('answers');
$question=new Question;
$question->question_text=$question_text;
$question->save();
foreach($answers as $ans){
$answer=new Answer;
$answer->question_id=$question->id;
$answer->answer_text=$ans->answer_text;
if($answer->isCorrect){
$answer->is_correct=$ans->isCorrect;
}
else{
$answer->is_correct=0;
}
$answer->save();
}
但迭代时出现错误
`production.ERROR: exception 'ErrorException' with message 'Trying to get property of non-object'`
我在这里做错了什么。我是第一次使用PHP。我试图像Javascript或Python方式迭代它。 告诉我如何获取答案数组对象的值并存储它们。
答案 0 :(得分:5)
您似乎没有正确引用数组变量。这应该有效:
foreach($answers as $ans){
$answer=new Answer;
$answer->question_id=$question->id;
$answer->answer_text=$ans['answer_text'];
$answer->is_correct = isset($ans['isCorrect']);
$answer->save();
}
P.S。我不确定forEach
- 我很惊讶它有效 - 但您应该将其重命名为foreach
以确认正常标准