Jon*_*jie 8 php eloquent laravel-5
我想要的:
grade用户在数据库中回答的内容(如果存在)并获得该答案的等级.我有什么:
3表,short_answer,sa_sa_answer,short_answer_answer.short_answer表格有问题,并且每个问题都有很多答案位于short_answer_answer表格中,等级也包含在那里,问题可以有1个或更多答案.我有什么代码:
调节器
foreach($sa_question_id as $key => $value){
$sa = ShortAnswer::with('answers')->find($sa_question_id[$key]);
$possible_answers = [];
foreach($sa->answers as $possible_answer){
$possible_answers[] .= strtolower($possible_answer->answer);
}
if(in_array(strtolower($sa_answer[$key]), $possible_answers)){
$grade = ShortAnswerAnswer::where('answer', $sa_answer[$key])->get();
echo "plus +1. Grade is: " . $grade->grade . "<br>";
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:
我只是得到答案,答案等于用户的答案.但是,如果我有两个相同的答案和不同的grade,明显不同的问题怎么办?它可以选择错误的一个.
注意: 我正在使用Laravel5.1
更新: 表结构
short_answer
- name
-question
sa_sa_answer
- short_answer_id
-short_answer_answer_id
short_answer_answer
- answer
-grade
我已经解决了这个问题,但没有人得到赏金,但如果你能回答这个问题,我可以给你赏金加2复选标记和投票,我真的需要更多的帮助.它也与这个问题有关.赏金将在3天后消失.
您的这部分代码:
$grade = ShortAnswerAnswer::where('answer', $sa_answer[$key])->get();
Run Code Online (Sandbox Code Playgroud)
您从中得到的所有答案ShortAnswerAnswer等于$sa_answer[$key],没有条件指出您是否从您期望的正确问题中得到了答案。
所以,要解决你的问题,你也需要指出问题。喜欢:
$grade = ShortAnswerAnswer::where(['answer' => $sa_answer[$key], 'question_id' => $key])->get();
Run Code Online (Sandbox Code Playgroud)
P/s:这部分:
foreach($sa_question_id as $key => $value){
$sa = ShortAnswer::with('answers')->find($sa_question_id[$key]);
...
}
Run Code Online (Sandbox Code Playgroud)
那么,$sa_question_id[$key]正是$value。