2016-03-07 5 views
11

У меня это в моем Laravel веб-приложение:проверка 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)) 

Он не проверяет, что.

ответ

8

Вы всегда можете сосчитать коллекцию. Например, $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 
21

Чтобы определить, есть ли какие-либо результаты, которые вы можете сделать любое из следующих действий:

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

Notes/Ссылки

->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) работает, потому что коллекция реализует счетных и метод внутреннего счетчика():

http://laravel.com/api/5.2/Illuminate/Database/Eloquent/Collection.html#method_count

Так что вы можете сделать, это:

if (!$mentors->intern->employee->isEmpty()) { } 
+0

да, я знаю, что, но наставник не всегда имеет стажера. Итак, как я могу это проверить? – Jamie

4

Это самый быстрый способ:

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

Другие решения, такие как count сделать немного больше, чем нужно, который стоит немного больше времени.

Плюс, имя isEmpty() довольно точно описывает, что вы хотите проверить там, чтобы ваш код был более читабельным.

Смежные вопросы