php - 如何按当前类别显示相关帖子?
问题描述
在 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();
预期:刷新后,页面应显示导航类别的相关帖子。
实际:刷新后,页面显示导航的最新类别的相关帖子。
解决方案
对于这类事情,我通常会添加“标签”并使用关键字标记帖子,然后允许根据匹配标签的最高数量显示相关帖子(此处需要您自己的一些逻辑)
我过去使用的库是: https ://github.com/spatie/laravel-tags
依赖会话是困难的,尤其是因为人们最终可能会直接从搜索引擎进入您的文章页面,因此没有会话历史记录
推荐阅读
- clang - QtCreator 中的 ClangCodeModel 在导入的 C++20 模块上说“找不到模块”
- python - 我该如何解决这个问题?
- java - 无法在 Junit5 Mockito-inline 中以不同的行为模拟同一个类构造函数两次
- javascript - 为什么 useState 返回未定义?
- javascript - 带有空字符串、“任何”或“全部”的 Firestore 查询
- javascript - JavaScript 中的井字游戏
- flutter - 图像正在加载 chrome 但未在手机中加载
- swift - 当您在后台访问另一个应用程序时,Flora 和 Forest 应用程序如何知道?[迅速]
- google-cloud-platform - 每个月的第一个星期一的云调度程序触发
- python-3.x - nextflow 没有找到我所有的 python 模块