php – 如何使用Laravel Eloquent获取特定的成绩数据?
我想要的是:
>获取用户在数据库中回答的等级(如果存在)并获得该答案的等级. 是)我有的: >我有3个表,short_answer,sa_sa_answer,short_answer_answer. 我有什么代码: 调节器 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>"; } } 问题是: 我只是得到答案,答案等于用户的答案.但是如果我有两个相同的答案和不同的等级和明显不同的问题怎么办?它可以选择错误的一个. 注意:我正在使用Laravel5.1 更新:表结构 SHORT_ANSWER sa_sa_answer short_answer_answer Update 我已经解决了这个问题,但没有人得到赏金,但是如果你能回答this question,我可以给你赏金加2复选标记和投票,我真的需要更多的帮助.它也与这个问题有关.赏金将在3天后消失.
我们可以使用单个查询来解决此问题:
$questions = ShortAnswer::with('answers') ->whereIn('id',$sa_question_id) ->whereHas('answers',function ($query) use ($sa_answer) { $placeholders = join(",",array_pad([],count($sa_answer),"?")); $query->whereRaw("LOWER(answer) IN $placeholders",$sa_answer); }) ->get(); foreach ($questions as $question) { foreach ($question->answers as $answer) { echo 'plus +1. Grade is: ' + $answer->grade}."; } } 这样可以优化循环,因此我们只需要查询数据库一次即可获得所有问题和答案.它还解决了问题中的问题,因为查询维护了问题和答案之间的关系,因此我们不会无意中为问题选择错误的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |