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.

19
demandé sur Laerte 2016-03-07 11:34:59

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
11
répondu otezz 2016-03-08 02:32:04

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()) { }
34
répondu Drudge 2018-09-29 11:53:53

à partir de Laravel 5.3 vous pouvez simplement utiliser :

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

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

11
répondu Mohamed Salem Lamiri 2017-10-30 15:09:20

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.

6
répondu Csongor Halmai 2017-07-17 04:05:16

je préfère

(!$mentor)

Est plus efficace et précis

0
répondu Marcello Patto 2018-07-25 14:56:22

php7 vous pouvez utiliser Null Coalesce Opperator:

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

retour Null ou de l'employé.

0
répondu d.raev 2018-09-26 08:13:32