检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel

Posted

技术标签:

【中文标题】检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel【英文标题】:Checking for the presence of posts in a category does not work. php, Blade, Laravel检查某个类别中是否存在帖子不起作用。 php,刀片,Laravel 【发布时间】:2021-04-26 14:54:06 【问题描述】:

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

@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);

但它不起作用。所有类别都写成“帖子没有类别”或“打开”。即检查不正确。

【问题讨论】:

【参考方案1】:

在控制器中你可以做

$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() 

【讨论】:

感谢您的回答!但是你怎么能阻止这种转变呢?现在导航到页面,即使它是空的。 哦,那你需要withCount() 非常抱歉,请问如何在控制器中进行同样的检查?如果帖子数量少于1,我想return redirect()-&gt;back() @Hi_TecH 检查我补充说 Trying to get property 'posts_count' of non-object。我认为这是由于 find() 的值。【参考方案2】:

在你的刀片文件检查条件中

@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);

【讨论】:

以上是关于检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel的主要内容,如果未能解决你的问题,请参考以下文章

如何在wordpress中检查帖子是不是属于分类类别的子类别

Wordpress-检查帖子是否属于某个类别

带有 Ajax 的 Jquery 日期选择器不起作用

使用Twig和WordPress,如何确定帖子是否属于某个类别?

如何使用多个类别过滤帖子?

检查 Laravel 中是不是存在记录不起作用