'Laravel 7 - Variables and MySQL queries in dompdf
I am trying to print a student's record, that means I need the data related to a specific course the student took. I put a where restriction so that this only brings me the data of the course from which the record is going to be downloaded, but I don't know why it returns the data of the last course that the student took and not of the one I am downloading.
- This is my view
<table class="table table-bordered table-sm text-center ">
<thead class="text-white badge-primary">
<tr>
<th>Year</th>
<th>Season</th>
<th>Course</th>
<th>Record</th>
</tr>
</thead>
<tbody>
@foreach ($student->groups as $group)
<form method="GET" action="{{url('print/'.$student->id_student)}}">
<tr>
<input hidden value="{{$group->idGroup }}" name="idGroup">
<td class="align-middle">
@foreach ($group->levels as $level)
<input hidden value="{{ $level->course->program->season->year->idSchoolYear }}" name="idSchoolYear">
{{$level->course->program->season->year->year}}
@if (!$loop->last)
<hr>
@endif
@endforeach
</td>
<td class="align-middle">
@foreach ($group->nivels as $level)
<input hidden value="{{ $level->course->program->season->idSeason }}" name="idSeason">
{{$level->course->program->season->nombreSeason}}
@if (!$loop->last)
<hr>
@endif
@endforeach
</td>
<td class="align-middle">
@foreach ($group->nivels as $level)
<input hidden value="{{ $level->course->idCurso }}" name="idCurso">
{{$level->course->nombreCurso}}
@if (!$loop->last)
<hr>
@endif
@endforeach
</td>
<td class="align-middle">
<button class="btn btn-outline-success" onChange="this.form.submit()"><i class="material-icons">file_download</i></a>
</td>
@endforeach
</form>
</tbody>
</table>
- Controller
public function print($id_student, Request $request)
{
$idGroup = $request->get('idGroup');
$idSchoolYear = $request->get('idSchoolYear');
$idSeason = $request->get('idSeason');
$idCourse = $request->get('idCourse');
$student = Students::where('id_student', $id_student)->first();
$group = $student->groups()->where('groups.idGroup', $idGroup)->first();
$data = DB::select('SELECT
students.id_student AS id_student,
students.names AS names,
students.last_name AS last_name,
groups.identifier AS identifier,
levels.levelName AS levelName,
levels.idLevel AS idLevel,
courses.idCourse AS idCourse,
courses.courseName AS courseName,
courses.duration AS duration,
courses.initialDate AS begin,
courses.finalDate AS final,
programs.programName AS programName,
programs.idProgram AS idProgram,
seasons.seasonName AS seasonName,
seasons.idSeason AS idSeason,
school_years.year AS year,
school_years.idSchoolYear AS idSchoolYear,
student_group.grade AS grade
FROM students
JOIN student_group ON (student_group.id_student =students.id_student)
JOIN groups ON (groups.idGroup = student_group.idGroup)
JOIN level_group ON (groups.idGroup = level_group.idGroup)
JOIN levels ON (level_group.idLevel = levels.idLevel)
JOIN courses ON (levels.idCourse = courses.idCourse)
JOIN programs ON (programs.idProgram = courses.idProgram)
JOIN seasons ON (seasons.idSeason = programs.idSeason)
JOIN school_years ON (school_years.idSchoolYear = seasons.idSchoolYear)
WHERE students.id_student = ?
AND groups.idGroup = ?
AND school_years.idSchoolYear = ?
AND seasons.idSeason = ?
AND courses.idCourse = ?
;', [$id_student, $idGroup, $idSchoolYear, $idSeason, $idCourse]);
$aniosEscolares = AnioEscolar::all();
$qrcode = QrCode::size(150)->generate($student);
$pdf = PDF::loadView('records.records', compact('student', 'data', 'group', 'idGroup'), ["value" => $qrcode])
->setPaper('a4', 'landscape');
return $pdf->download('record.pdf');
}
- And this is the PDF
@foreach ($student->groups as $group)
<form method="GET" action="{{url('print/'.$student->id_student)}}">
<tr>
<input hidden value="{{$group->idGroup }}" name="idGroup">
<td class="align-middle">
@foreach ($group->levels as $level)
<input hidden value="{{ $level->course->program->season->year->idSchoolYear }}" name="idSchoolYear">
{{$level->course->program->season->year->year}}
@if (!$loop->last)
<hr>
@endif
@endforeach
</td>
<td class="align-middle">
@foreach ($group->levels as $level)
<input hidden value="{{ $level->course->program->season->idSeason }}" name="idSeason">
{{$level->course->program->season->seasonName}}
@if (!$loop->last)
<hr>
@endif
@endforeach
</td>
<td class="align-middle">
@foreach ($group->levels as $level)
<input hidden value="{{ $level->course->idCourse }}" name="idCourse">
{{$level->course->courseName}}
@if (!$loop->last)
<hr>
@endif
@endforeach
</td>
<td class="align-middle">
<button class="btn btn-outline-success" onChange="this.form.submit()"><i class="material-icons">file_download</i></a>
</td>
@endforeach
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
