微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查类别中是否存在帖子不起作用 php、刀片、Laravel

如何解决检查类别中是否存在帖子不起作用 php、刀片、Laravel

我有一个包含所有类别的视图,通过单击一个类别,用户可以转到该类别。但如果该类别中没有帖子,我想阻止去那里。我试图这样做:

@if(($category->id === $category->posts()) !== 0)
   <a class="btn btn-success" href="{{ route('category',$category->code)}}">Open</a>
@else
   <span class="btn btn-warning">No posts in this category</span>
@endif

posts() 在我的 Category 模型中是一个雄辩的关系:

public function posts() {
   return $this->hasMany(Post::class);
}

但它不起作用。所有类别都写有“帖子没有类别”或“打开”。也就是说,检查不能正常工作。

解决方法

在你的刀片文件中检查这样的情况

@if($category->posts_count > 0)
   <a class="btn btn-success" href="{{ route('category',$category->code)}}">Open</a>
@else
   <span class="btn btn-warning">No posts in this category</span>
@endif

在您的控制器中使用了 withCount 方法

$category = Category::withCount('posts')->get();

并在您的类别模型中添加关系(如果未添加)(one to many)

public function posts(){
    return $this->hasMany(Post::class);
}
,

在控制器中你可以做

$category = Category::withCount('posts')->get()

它生成 post_count 密钥,您可以在视图中查看

@if($category->posts_count > 0)
   <a class="btn btn-success" href="{{ route('category',$category->code)}}">Open</a>
@else
   <span class="btn btn-warning">No posts in this category</span>
@endif

https://laravel.com/docs/8.x/eloquent-relationships#counting-related-models


更新

$category = Category::withCount('posts')->findOrFail(1)

if($category->posts_count > 1){
   return redirect()->back() 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。