【发布时间】:2019-04-23 03:37:38
【问题描述】:
我有两个模型考试和学生,在每个学生尝试考试后,她/他获得的分数存储在数据透视表exam_user 中。我需要根据获得的分数对学生进行排名。
现在我正在为此使用一个非常低效的解决方案,它涉及一个 for 循环。下面是实现
$rank=0;
$attempts = DB::table('exam_user')
->where('exam_id',$exam->id)
->orderBy('marks','desc')
->get();
foreach ($attempts as $attempt) {
$rank++;
if($attempt->user_id==Auth::id())
break;
}
有什么方法可以在不使用 for 循环的情况下确定排名,只需使用 laravel 中的查询生成器。我想我在这里遗漏了一些 SQL 基础知识。
【问题讨论】:
标签: sql laravel laravel-5 php-7 laravel-query-builder