在视图中防止延迟加载

2 laravel laravel-5 laravel-5.3

我有一个查询的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
}
Run Code Online (Sandbox Code Playgroud)

请注意,有时结果有一个stats属性,有时它没有(尽管每个记录都有stats关系).不要问为什么,这就是我在后端设置的方式.

我想在我的视图中循环遍历这些结果,如下所示:

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

但是,对于post id2,循环也将输出该$post->stats->total值,因为它延迟加载stats.

如何防止它延迟加载stats关系呢?

Doo*_*om5 5

这是因为您正在访问$post->stats.您可以stats使用以下relationLoaded()定义的方法检查是否加载了关系Illuminate\Database\Eloquent\Model:

@foreach ($posts as $post)
    @if ($post->relationLoaded('stats'))
        {{ $post->stats->total }}
    @endif
@endforeach
Run Code Online (Sandbox Code Playgroud)