How can I make the code in the view file with PHP and Laravel more clear?
I was trying to show a result from the MySQL database using PHP and Laravel.
This is my Controller code
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]);
}
The Controller code is working for me. The code below is my view:
@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
But I need to create a select element with this code and I change the code a little to be able to do that.
So, I modify the 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 ]);
}
And I change the part of the view that shows the result:
@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
All code is working, but I think the view file(index.blade.php) is not clean.
How can I make this code cleaner?
Answer
Solution:
If you sort out the indentation and use foreach
instead, your view code becomes a bit more readable.
@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
The variable names I used might be incorect, I don't speak Spanish.
Source