我有一个来自查询的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
关系?
答案 0 :(得分:5)
这是因为您正在访问$post->stats
。您可以使用stats
中定义的relationLoaded()
方法检查是否加载了Illuminate\Database\Eloquent\Model
关系:
@foreach ($posts as $post)
@if ($post->relationLoaded('stats'))
{{ $post->stats->total }}
@endif
@endforeach