我正在開發一個QA應用程序,我需要根據需求動態地添加多個答案。 爲此,我發送一個帶有問題和答案的對象。循環一個對象數組並獲取laravel中的值PHP
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
isCorrect'。 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的方式來迭代它。 告訴我如何獲得答案數組對象的值並存儲它們。
'$ ans.answer_text;'是什麼意思? ''是PHP中的文本串聯運算符;這不是Java。你可能需要' - >'。 – LSerni
此外,如果您不確定該屬性是否存在,則不應使用'$ answer-> isCorrect'。可以使用'isset()'來確定,或者只是根據'is_correct'分配它:'$ answer-> isCorrect = isset($ ans-> is_correct)? (int)$ ans-> is_correct:0;' – LSerni
這是 - > PHP的符號。我糾正了這一點。 Thanx Iserni –