Laravel检查集合是否为空

zte4gxcn  于 2023-01-10  发布在  其他
关注(0)|答案(8)|浏览(247)

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

如何检查是否有$mentors->intern->employee
当我这样做:

@if(count($mentors))

它不检查此内容。

bbmckpt7

bbmckpt71#

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

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

注解/参考资料

第一个月
https://laravel.com/api/5.7/Illuminate/Database/Eloquent/Collection.html#method_first
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()) { }
uemypmqf

uemypmqf2#

您可以随时计算集合。例如,$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
r7xajy2e

r7xajy2e3#

Laravel 5.3开始,您只需使用:

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

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

pes8fvy9

pes8fvy94#

这是最快的方法:

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

其他解决方案,如count,做的比您需要的多一点,花费的时间稍微多一点。
另外,isEmpty()名称非常精确地描述了您要在那里检查的内容,这样您的代码将更具可读性。

p8ekf7hl

p8ekf7hl5#

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

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

在控制器中

if ($mentors->count() == 0) {
    return "Nothing Found";
}
v7pvogib

v7pvogib6#

php7中,您可以使用Null Coalesce运算符:

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

这将返回Null或雇员。

wtlkbnrh

wtlkbnrh7#

我更喜欢
第一个月
更加有效和准确

ffscu2ro

ffscu2ro8#

首先你可以把你的集合转换成一个数组,然后运行一个如下的空方法:

if(empty($collect->toArray())){}

相关问题