Laravel检查集合是否为空

时间:2016-03-07 08:34:59

标签: php laravel laravel-5.2

我在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))

它没有检查。

7 个答案:

答案 0 :(得分:58)

要确定是否有任何结果,您可以执行以下任何操作:

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)有效,因为Collection实现了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()) { }

答案 1 :(得分:21)

您可以随时统计收藏品。例如,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 将返回导师有多少实习生。

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

在您的代码中,您可以执行类似的操作

{{1}}

答案 2 :(得分:16)

Laravel 5.3 开始,您只需使用:

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

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

答案 3 :(得分:7)

这是最快的方式:

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

count这样的其他解决方案比您需要的更多,这需要花费更多时间。

另外,isEmpty()名称非常精确地描述了您要检查的内容,因此您的代码将更具可读性。

答案 4 :(得分:0)

我喜欢

(!$mentor)

更有效,更准确

答案 5 :(得分:0)

php7中,您可以使用Null Coalesce Opperator

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

这将返回Null或员工。

答案 6 :(得分:0)

这是我到目前为止找到的最好的解决方案。

在刀片中

- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(nullable NSString *)domain;

在控制器中

@if($mentors->count() == 0)
    <td colspan="5" class="text-center">
        Nothing Found
    </td>
@endif