0

我是 php 和 larval 的新手。我有以下数据库表问题和答案。每个问题都可以有多个答案,正确答案字段中显示更正的答案。我试图用下面这样的答案列出问题

这就是问题...... 第一个答案 b. 第二个答案 c. 第三个答案 d. 第四个答案

我有以下代码:

public static function getMultipleChoiceQuestions($chapter)
{
    $data = DB::table('newQuestions')
        ->join('newAnswers', 'newQuestions.questionId', '=', 'newAnswers.questionId')
        ->where('chapterId', '=', $chapter)->orderBy('newQuestions.questionId')
        ->where('questionType', '=', "1")
        ->get();

    $questions = array('questionType' => $questionType, 'data' => $data);
    return $questions;
}

问题表:chapterId questionId questionText

答案表: answerId questionId answerText correctAnswer

以下代码显示每个答案的问题。

<fieldset id="group_1">
    <p><div><input type="checkbox" class="checkall"> Check all</div></p>
    <div style="width:600px; height:300px; overflow: auto;">
        @foreach($questions['data'] as $question)
            <p><input name="your_name" value="{{ $question->questionId }}" id="{{ $question->questionId }}" type="checkbox" class="questionsOnPage" />
                {{ $question->questionText }}</p>
        @endforeach
    </div>
</fieldset>

我想列出问题然后回答下一个问题。

请帮忙!

4

1 回答 1

3

我认为您需要进一步了解 Eloquent。你应该能够做这样的事情。

以下是建立关系的方法。基于此,您的答案表名称需要为answers,并且需要一个名为 的列question_id。虽然,您可以通过文档了解如何设置自定义表名和列名。

应用程序/模型/Question.php

class Question extends Eloquent {

    public function answers()
    {
        return $this->hasMany('Answer');
    }
}

应用程序/模型/Answer.php

class Answer extends Eloquent {

    public function question()
    {
        return $this->belongsTo('Question')
    }
}

现在,一旦将这些关系设置为这样,我们就可以真正使用 Eloquent。你可以用刀片在你的视图中很容易地做这样的事情。

外部 foreach 将遍历每个问题。内部 foreach 将显示属于当前问题的每个答案,然后继续下一个问题。

@foreach(Question::all() as $question)
    <h3>{{ $question->title }}</h3>
    <ul>
    @foreach($question->answers->all() as $answer)
        <li>{{$answer->text}}</li>
    @endforeach
    </ul>
@endforeach

您在此处看到的titleandtext属性只需是您在数据库中拥有的列名。你应该改变那些以匹配你的。

使用上面的示例,您应该能够根据需要设置样式并将其放置在表单中。现在它会在 h3 标签中显示问题,然后是一个无序列表,下面有答案。

于 2013-11-12T05:20:46.357 回答