首页 > 解决方案 > 如何在 laravel 中管理数据库中的试题?

问题描述

请尝试在 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,它基本上显示所有问题和答案,甚至不允许我为不同的问题选择答案,因为它具有相同的“字段类型名称”。我想一个一个地显示问题或任何我能做到的最好的方式。我需要帮助

标签: phpsqllaravel

解决方案


您可以通过在模型上添加方法来获取下一个问题,例如:

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提供的方法从那里获得“下一个”问题。


推荐阅读