如何使用Laravel Eloquent获取特定的成绩数据?

Jon*_*jie 8 php eloquent laravel-5

我想要的:

  1. 获取grade用户在数据库中回答的内容(如果存在)并获得该答案的等级.

我有什么:

  1. 我有3表,short_answer,sa_sa_answer,short_answer_answer.
  2. 现在,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天后消失.

Duc*_*lan 1

您的这部分代码:

$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