Проверка 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))
Он не проверяет это.
Ответы
Ответ 1
Вы всегда можете подсчитать коллекцию. Например, $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
Ответ 2
Чтобы определить, есть ли какие-либо результаты, вы можете выполнить одно из следующих действий:
if ($mentor->first()) { }
if (!$mentor->isEmpty()) { }
if ($mentor->count()) { }
if (count($mentor)) { }
Примечания/Ссылки
->first()
http://laravel.com/api/5.2/Illuminate/Database/Eloquent/Collection.html#method_first
isEmpty()
http://laravel.com/api/5.2/Illuminate/Database/Eloquent/Collection.html#method_isEmpty
->count()
http://laravel.com/api/5.2/Illuminate/Database/Eloquent/Collection.html#method_count
count($mentors)
работает, потому что Collection реализует счетный и внутренний метод count():
http://laravel.com/api/5.2/Illuminate/Database/Eloquent/Collection.html#method_count
Итак, что вы можете сделать:
if (!$mentors->intern->employee->isEmpty()) { }
Ответ 3
Начиная с Laravel 5.3 вы можете просто использовать:
if ($mentor->isNotEmpty()) {
//do something.
}
Документация https://laravel.com/docs/5.5/collections#method-isnotempty
Ответ 4
Это самый быстрый способ:
if ($coll->isEmpty()) {...}
Другие решения, такие как count
делают немного больше, чем вам нужно, что стоит немного больше времени.
Кроме того, имя isEmpty()
довольно точно описывает, что вы хотите проверить там, чтобы ваш код был более читаемым.
Ответ 5
я предпочитаю
(!$mentor)
Более эффективен и точен