web-dev-qa-db-ja.com

Laravelコレクションが空かどうかを確認

私の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

$mentors->intern->employeeがあるかどうかを確認するにはどうすればよいですか?

私がする時 :

@if(count($mentors))

それはチェックしません。

35
Jamie

コレクションはいつでもカウントできます。たとえば、$mentor->intern->count()は、メンターのインターン数を返します。

https://laravel.com/docs/5.2/collections#method-count

あなたのコードでは、このようなことができます

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

結果があるかどうかを判断するには、次のいずれかを実行できます。

if ($mentor->first()) { } 
if (!$mentor->isEmpty()) { }
if ($mentor->count()) { }
if (count($mentor)) { }
if ($mentor->isNotEmpty()) { }

注/参考文献

->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)は、コレクションがCountableおよび内部count()メソッドを実装するため機能します。

https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Collection.html#method_count

isNotEmpty()

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

だからあなたができることは:

if (!$mentors->intern->employee->isEmpty()) { }
69
Drudge Rajen

Laravel 5.3から開始すると、単純に使用できます:

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

ドキュメント https://laravel.com/docs/5.5/collections#method-isnotempty

18

これが最速の方法です。

if ($coll->isEmpty()) {...}

countなどの他のソリューションは、必要以上に多くの処理を行うため、少し時間がかかります。

さらに、isEmpty()名は、そこで確認したい内容を非常に正確に記述するため、コードが読みやすくなります。

7
Csongor Halmai

php7から Null Coalesce Opperator を使用できます。

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

これは、Nullまたは従業員を返します。

1
d.raev

私は好む

(!$mentor)

より効果的で正確です

0
Marcello Patto