如何在 laravel 中管理数据库中的试题?
Posted
技术标签:
【中文标题】如何在 laravel 中管理数据库中的试题?【英文标题】:How to manage Examination Questions from a database in laravel? 【发布时间】:2020-10-06 15:42:57 【问题描述】:请尝试在 php/Laravel 中创建一个在线考试平台。我将问题和答案存储在数据库中。我已经能够使用foreach
检索所有问题和答案。如何一次显示一个问题/答案供学生解决。第一个问题之后的下一步按钮。这是我的控制器代码:
public function showQuestions($course_code, $course_semester)
$course = Course::find($course_code);
$courseQuestion = DB::table('courses')
->select('*')
->join('questions', 'courses.course_code', 'questions.subject_code')
->where('course_code','=', $course_code)
->where('course_semester','=',$course_semester)
->get();
return view('all-question-page',[
'display' => $courseQuestion,
'course' => $course
]);
在我的刀片文件中,我使用了 foreach,它基本上显示所有问题和答案,甚至不允许我为不同的问题选择答案,因为它具有相同的 `` `字段类型名称```。我想一个一个地显示问题或任何我能做到的最好的方式。我需要帮助
【问题讨论】:
为什么要粘贴两个相同的方法? 这是一个错误。我已经更新了查询 不知道你在DB中记录的格式是如何存储的,查看查询看起来数据库是mysql。如果可能的话,不是一次获取所有记录,而是一次获取与该问题相关的一个问题和答案,然后在下一个和上一个按钮上获取下一个和上一个记录。按照链接获取提示。 ***.com/questions/21909706/… 【参考方案1】:如果要一一显示问题,可以选择使用路由将每个问题显示为单个页面
/course/course_id/question/question_id
按下下一步时,您可以通过使用当前问题 ID 访问当前问题的课程来存储学生的解决方案并检索下一个问题。该课程包含所有问题 ID,您可以计算下一个或上一个问题的 ID。
另一种方法是使用 JS 来更改 html 的可见性。
【讨论】:
这是我的路线Route::get('/display/exams/course_code/course_semester','CourseController@showQuestions');
根据所选课程显示问题
您不知何故需要显示所选课程的第一个问题。检查亚当的答案。【参考方案2】:
您可以通过在模型上添加方法来获取下一个问题,例如:
public function next()
return static::where($this->getKeyName(), '>', $this->getKey())->first();
这假设您有来自端点的问题上下文,例如上面 Vimona 的响应。您的控制器方法可能如下所示:
class QuestionController
...
public function show($id)
// Find the question, assuming the model is Question
$question = Question::find($id);
return view('question', [
'question' => $question
]);
刀片视图中的下一个按钮:
<a href="route('question', ['id' => $question->next()->getKey()])">Next</a>
总之,我将从您课程的第一个问题开始,然后您可以使用提供的next
方法获得“下一个”问题。
【讨论】:
嘿亚当,我清楚地理解这一点,但使用我的控制器,我无法弄清楚如何获取问题的 id。我在这里使用 get() 方法来检索数据集合。$courseQuestion = DB::table('courses') ->select('*') ->join('questions', 'courses.course_code', 'questions.subject_code') ->where('course_code','=', $course_code) ->where('course_semester','=',$course_semester) ->get();
您的解决方案正在运行,但会找到获取 ID 的方法。非常感谢以上是关于如何在 laravel 中管理数据库中的试题?的主要内容,如果未能解决你的问题,请参考以下文章
如何显示存储在数据库 PHP 中的图像路径? (Laravel 兰花)
如何在 laravel 6 中通过管理员登录添加或插入新用户
如何在 laravel php 中使用 ajax 根据日期范围从 mysql 数据库中检索数据?