防止在视图中延迟加载
Prevent lazy loading in view
我有一个 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
但是,对于 post id
2,循环也会输出 $post->stats->total
值,因为它延迟加载了 stats
.
如何防止它延迟加载 stats
关系?
发生这种情况是因为您正在访问 $post->stats
。您可以使用 Illuminate\Database\Eloquent\Model
:
中定义的 relationLoaded()
方法来检查是否加载了 stats
关系
@foreach ($posts as $post)
@if ($post->relationLoaded('stats'))
{{ $post->stats->total }}
@endif
@endforeach
我有一个 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
但是,对于 post id
2,循环也会输出 $post->stats->total
值,因为它延迟加载了 stats
.
如何防止它延迟加载 stats
关系?
发生这种情况是因为您正在访问 $post->stats
。您可以使用 Illuminate\Database\Eloquent\Model
:
relationLoaded()
方法来检查是否加载了 stats
关系
@foreach ($posts as $post)
@if ($post->relationLoaded('stats'))
{{ $post->stats->total }}
@endif
@endforeach