我如何使代码在视图文件与PHP和Laravel更清楚?



我试图使用PHP和Laravel显示MySQL数据库的结果。

这是我的控制器代码

public function index()
{
$assessments = DB::table('assessments')
->join('questions', 'questions.assessment_id', '=', 'assessments.id')
->join('answers', 'answers.question_id', '=', 'questions.id')
->select('*')
->get();
return view('assessment_submission.index', ['resultSQL' => $assessments]);
}

控制器代码为我工作。下面的代码是我的视图:

@foreach($resultSQL as $row)
<div class="card" style="">
<div class="card-body">
<h5 class="card-title">{!! $row->assesment_name !!}</h5>
<h5 class="card-title">{!! $row->question !!}</h5>
<h5 class="card-title">{!! $row->answer !!}</h5>
</div>
</div>
@endforeach

但是我需要用这段代码创建一个select元素,我稍微改变了一下代码,以便能够做到这一点

那么,我修改Controller:

public function index()
{
$assessments = DB::table('assessments')
->join('questions', 'questions.assessment_id', '=', 'assessments.id')
->join('answers', 'answers.question_id', '=', 'questions.id')
//->join('answers')
->select('*')
->get();
$resultado_json = json_decode(json_encode($assessments), true);
$resultado_em_pedacos = array_chunk($resultado_json, 4);
return view('assessment_submission.index', ['resultSQL' => $assessments, 'resultado_em_pedacos' => $resultado_em_pedacos ]);
}

然后改变显示结果的部分:

@for ($i = 0; $i < count($resultado_em_pedacos); $i++)
<p>
{!! $resultado_em_pedacos[$i][0]["question_content"] !!}
<select name="{{$i}}" id="{{$i}}">
@for ($j = 0; $j < count($resultado_em_pedacos[0]); $j++)
<option value="volvo">{!! $resultado_em_pedacos[$i][$j]["answer_text"] !!}</option>
@endfor
</select>
</p>
@endfor

所有的代码是工作的,但我认为视图文件(index.blade.php)是不干净的。

如何使这段代码更简洁?

如果您整理缩进并使用foreach代替,您的视图代码将变得更易于阅读。

@foreach ($resultado_em_pedacos as $resultado_em_pedaco)
<p>
{!! $resultado_em_pedaco[0]["question_content"] !!}
<select name="{{$i}}" id="{{$i}}">
@foreach ($resultado_em_pedaco as $resultado)
<option value="volvo">
{!! $resultado["answer_text"] !!}
</option>
@endforeach
</select>
</p>
@endforeach

我使用的变量名可能不正确,我不会说西班牙语。

最新更新