使用缓存时进行查询返回404
在我的控制器中,我拥有
public function single($slug)
{
return view('post.single', [
'country' => $this-> getPostBySlugCached($slug),
]);
}
和缓存特征:
private function getPostBySlugCached(string $slug)
{
return Cache::tags(['post'])->remember('post:slug:'.$slug, CacheRemember::FOUR_WEEKS, function () use ($slug) {
return Post::where('slug', $slug)
->firstOrFail();
});
}
但是如果我放入不退出的sl,我不会得到404,这是我期望的,鉴于我正在使用firstorfail()
。相反,我会发现错误,因为$ post
在刀片视图中为null
。是因为cache ::记住
返回null
?如果是这样,我该如何实现以使其返回404?
In my controller I have
public function single($slug)
{
return view('post.single', [
'country' => $this-> getPostBySlugCached($slug),
]);
}
And in a cache trait:
private function getPostBySlugCached(string $slug)
{
return Cache::tags(['post'])->remember('post:slug:'.$slug, CacheRemember::FOUR_WEEKS, function () use ($slug) {
return Post::where('slug', $slug)
->firstOrFail();
});
}
But what happens if I put in a slug that doesn't exit, I don't get a 404 which is what I would expect given I'm using firstOrFail()
. Instead I get errors because $post
in the blade view is null
. Is that because Cache::remember
returns null
? If so, how can I achieve so that it will return a 404?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对您的控制器的较小更改
small change to your controller