Laravel vérifier si la collecte est vide
j'ai ceci dans mon Laravel webapp:
@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 $mentors->intern->employee
?
Quand je fais :
@if(count($mentors))
Il ne vérifie pas que.
6 réponses
Vous pouvez toujours compter la collection. Par exemple,$mentor->intern->count()
retour combien de stagiaire ne un mentor ont.
https://laravel.com/docs/5.2/collections#method-count
Dans votre code, vous pouvez faire quelque chose comme ceci
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
Pour déterminer s'il y a des résultats que vous pouvez faire les choses suivantes:
if ($mentor->first()) { }
if (!$mentor->isEmpty()) { }
if ($mentor->count()) { }
if (count($mentor)) { }
Notes / References
->first()
https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Collection.html#method_first
isEmpty()
https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Collection.html#method_isEmpty
->count()
https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Collection.html#method_count
count($mentors)
fonctionne parce que la Collection implémente la méthode Countable et une méthode de comptage interne ():
https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Collection.html#method_count
alors ce que vous pouvez faire est:
if (!$mentors->intern->employee->isEmpty()) { }
à 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 la voie la plus rapide:
if ($coll->isEmpty()) {...}
autres solutions comme count
faire un peu plus que vous avez besoin qui coûte un peu plus de temps.
de Plus, le isEmpty()
nom assez précisément ce que vous voulez vérifier si votre code sera plus lisible.
php7
vous pouvez utiliser Null Coalesce Opperator:
$employee = $mentors->intern ?? $mentors->intern->employee
retour Null
ou de l'employé.