J'ai ceci dans ma webapp Laravel:
@foreach($mentors as $mentor)
@foreach($mentor->intern as $intern)
<tr class="table-row-link" data-href="/werknemer/{!! $intern->employee->EmployeeId !!}">
<td>{{ $intern->employee->FirstName }}</td>
<td>{{ $intern->employee->LastName }}</td>
</tr>
@endforeach
@endforeach
Comment puis-je vérifier s'il y a un $mentors->intern->employee
?
Quand je fais :
@if(count($mentors))
Il ne vérifie pas pour cela.
Vous pouvez toujours compter la collection. Par exemple, $mentor->intern->count()
retournera combien de stagiaires un mentor a.
https://laravel.com/docs/5.2/collections#method-count
Dans votre code, vous pouvez faire quelque chose comme ça
foreach($mentors as $mentor)
@if($mentor->intern->count() > 0)
@foreach($mentor->intern as $intern)
<tr class="table-row-link" data-href="/werknemer/{!! $intern->employee->EmployeeId !!}">
<td>{{ $intern->employee->FirstName }}</td>
<td>{{ $intern->employee->LastName }}</td>
</tr>
@endforeach
@else
Mentor don't have any intern
@endif
@endforeach
À partir de Laravel 5.3, vous pouvez simplement utiliser:
if ($mentor->isNotEmpty()) {
//do something.
}
Documentation https://laravel.com/docs/5.5/collections#method-isnotempty
C'est le moyen le plus rapide:
if ($coll->isEmpty()) {...}
D'autres solutions telles que count
en font un peu plus que nécessaire, ce qui coûte un peu plus de temps.
De plus, le nom isEmpty()
décrit assez précisément ce que vous voulez vérifier afin que votre code soit plus lisible.
Je préfère
(!$mentor)
Est plus efficace et précis
À partir de php7
, vous pouvez utiliser Null Coalesce Opperator :
$employee = $mentors->intern ?? $mentors->intern->employee
Cela renverra Null
ou l'employé.