2016-09-30 2 views
1

У меня есть результат JSON из запроса, который выглядит следующим образом:Предотвращение отложенной загрузки ввиду

{ 
    "id":1, 
    "user_id":"1", 
    "message":"Hello, world", 
    "created_at":"2016-09-22 00:32:20", 
    "updated_at":"2016-09-22 00:32:20", 
    "stats": [ 
     ... 
    ] 
}, 
{ 
    "id":2, 
    "user_id":"1", 
    "message":"Hello, world", 
    "created_at":"2016-09-22 00:32:20", 
    "updated_at":"2016-09-22 00:32:20", 
}, 
{ 
    ... more results 
} 

Обратите внимание, что иногда результат имеет stats свойство, а иногда нет (несмотря на все записи, имеющей stats отношения). Не спрашивайте, почему, именно так я его создал в бэкэнде.

Я хочу, чтобы Переберите эти результаты на мой взгляд, как это:

@foreach ($posts as $post) 
    @if (isset($post->stats) && !empty($post->stats) 
     {{ $post->stats->total }} 
    @endif 
@endforeach 

Однако на пост id 2, цикл также выдает значение $post->stats->total, потому что он ленивый нагрузок stats.

Как я могу предотвратить ленивую загрузку отношений stats?

ответ

3

Это происходит потому, что вы получаете доступ к $post->stats. Вместо этого вы можете проверить, если загружен stats отношения или нет, используя метод, определенный в relationLoaded()Illuminate\Database\Eloquent\Model:

@foreach ($posts as $post) 
    @if ($post->relationLoaded('stats')) 
     {{ $post->stats->total }} 
    @endif 
@endforeach 
Смежные вопросы