如何在 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') -&gt;select('*') -&gt;join('questions', 'courses.course_code', 'questions.subject_code') -&gt;where('course_code','=', $course_code) -&gt;where('course_semester','=',$course_semester) -&gt;get(); 您的解决方案正在运行,但会找到获取 ID 的方法。非常感谢

以上是关于如何在 laravel 中管理数据库中的试题?的主要内容,如果未能解决你的问题,请参考以下文章

如何显示存储在数据库 PHP 中的图像路径? (Laravel 兰花)

如何在 laravel 6 中通过管理员登录添加或插入新用户

Laravel 动态更改连接

如何在 laravel php 中使用 ajax 根据日期范围从 mysql 数据库中检索数据?

如何将邮件数据从服务提供商传递到 laravel 4 中的 config/mail.php

如何使用数据库 laravel 背包中的数据更改标题