web-dev-qa-db-fra.com

Laravel vérifie si la collection est vide

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.

26
Jamie

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
18
otezz

À partir de Laravel 5.3, vous pouvez simplement utiliser:

if ($mentor->isNotEmpty()) {
//do something.
}

Documentation https://laravel.com/docs/5.5/collections#method-isnotempty

16

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. 

7
Csongor Halmai

Je préfère

(!$mentor)

Est plus efficace et précis

0
Marcello Patto

À partir de php7, vous pouvez utiliser Null Coalesce Opperator :

$employee = $mentors->intern ?? $mentors->intern->employee

Cela renverra Null ou l'employé.

0
d.raev