如何显示多个foreach?

时间:2019-05-25 11:45:24

标签: php laravel

我已将Exams模型更改为将ExamQuestions从hasMany保存为belongsTo,这是我修改控制器的方式。我在视图中为foreach()提供了一个无效的参数。

这是我已更改的考试模型

     public function questions()
  {
      return $this->belongsTo(ExamQuestion::class, 'exam_questions');
  }

这是我的控制人

public function exam($course_id, Request $request)
        {
            $course = Course::where('id', $course_id)->firstOrFail();
            $answers = [];
            $exam_score = 0;
            foreach ($request->get('questions') as $question_id => $answer_id) {
                $question = ExamQuestion::find($question_id);
                $correct_answer = ExamOption::where('exam_question_id', $question_id)
                    ->where('id', $answer_id)
                    ->where('is_correct', 1)->count() > 0;
                $answers[] = [

                    'exam_question_id' => $question_id,
                    'exam_option_id' => $answer_id,
                    'corect' => $correct_answer
                ];
                if ($correct_answer) {
                    $exam_score += $question->score;
                }
            }

            $exam_result = ExamResult::create([
              'exam_id' => $course->exam->id,
              'employee_id' => \Auth::id(),
              'result' => $exam_score,
            ]);
            $exam_result->answers()->createMany($answers);

            $get_reslts_score= Exam::with('exam_results')->first();
            $x = $get_reslts_score->passing_grade;

            if($exam_result->result >= $x) {
              $exam_result->is_complete = 1;
              $exam_result->save();
}

            return redirect()->route('learn.show', [$course, $request])->with('message', 'Test score: ' . $exam_score);
        }

这是我的观点

  <h3>@if ($courses->exam)</h3>
  <hr/>
    <div class="row">
      <div class="col-xs-12 form-group">

      <form action="{{ route('exam.save', [$courses->id]) }}" method="post">
      {{ csrf_field() }}


        @foreach($courses->exam->questions as $question)

        <br>{{$loop->iteration}} . {{$question->question}}</b>
        </br>

        @foreach($questions->exam_options as $option)
        &nbsp;<input type="radio" name="question[{{ $question->id }}]" value="{{ $option->id }}"/>&nbsp;&nbsp;{{ $option->text }}</br>
        @endforeach


        <br>
        @endforeach

1 个答案:

答案 0 :(得分:1)

  <h3>@if ($courses->exam)</h3>
  <hr/>
  <div class="row">
      <div class="col-xs-12 form-group">
         <form action="{{ route('exam.save', [$courses->id]) }}" method="post">
              {{ csrf_field() }}
           @foreach($courses->exam->questions as $questions)
               <br>{{$loop->iteration}} . {{$questions->question}}</b>
               </br>

            @foreach($questions->exam_options as $option)
               &nbsp;<input type="radio" name="question[{{ $questions->id }}]" value="{{ $option->id }}"/>&nbsp;&nbsp;{{ $option->text }}</br>
            @endforeach
            <br>
          @endforeach

如果它不起作用,请检查您的模型关系是否返回值。使用父级递归遍历整个数组,您可以达到任意深度here