Laravel check if collection is empty

前端 未结 7 1143
清酒与你
清酒与你 2020-12-08 00:10

I\'ve got this in my Laravel webapp:

@foreach($mentors as $mentor)
    @foreach($mentor->intern as $intern)
        

        
相关标签:
7条回答
  • 2020-12-08 00:34

    Starting from Laravel 5.3 you can simply use :

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

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

    0 讨论(0)
  • 2020-12-08 00:37

    To determine if there are any results you can do any of the following:

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

    Notes / References

    ->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) works because the Collection implements Countable and an internal count() method:

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

    isNotEmpty()

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

    So what you can do is :

    if (!$mentors->intern->employee->isEmpty()) { }
    
    0 讨论(0)
  • 2020-12-08 00:43

    This is the best solution I found so far.

    in blade

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

    in controller

    if ($mentors->count() == 0) {
        return "Nothing Found";
    }
    
    0 讨论(0)
  • 2020-12-08 00:50

    I prefer

    (!$mentor)

    Is more effective and accurate

    0 讨论(0)
  • 2020-12-08 00:57

    From php7 you can use Null Coalesce Opperator:

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

    This will return Null or the employee.

    0 讨论(0)
  • 2020-12-08 00:58

    You can always count the collection. For example $mentor->intern->count() will return how many intern does a mentor have.

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

    In your code you can do something like this

    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
    
    0 讨论(0)
提交回复
热议问题