首页 > 解决方案 > 如何按当前类别显示相关帖子?

问题描述

在 Laravel 中,帖子和类别具有多对多关系。这意味着一篇文章可以有多个类别。在这种情况下,我想按当前类别显示相关帖子。但是,我通过在会话中存储当前类别 ID 来实现这一点。但是,当帖子具有多个类别并且所有类别都在从其各自类别导航的不同选项卡中打开时,就会出现问题。如果我刷新它们,相关帖子将更改为存储在会话中的最新类别。

请提出解决此问题的方法。谢谢大家。:)

$category[] = $request->session()->get('current_category_id');
$relatedPosts = Post::whereHas('category', function($q) use ($category) {
    $q->whereIn('category_id',$category);
})->whereNotIn('id', $currentPost->id)->take(5)->get();

预期:刷新后,页面应显示导航类别的相关帖子。

实际:刷新后,页面显示导航的最新类别的相关帖子。

标签: phplaravel

解决方案


对于这类事情,我通常会添加“标签”并使用关键字标记帖子,然后允许根据匹配标签的最高数量显示相关帖子(此处需要您自己的一些逻辑)

我过去使用的库是: https ://github.com/spatie/laravel-tags

依赖会话是困难的,尤其是因为人们最终可能会直接从搜索引擎进入您的文章页面,因此没有会​​话历史记录


推荐阅读