当前位置: 首页 > 知识库问答 >
问题:

如何在laravel中按类别筛选帖子?

侯兴为
2023-03-14

我目前试图使3个表之间的关系。

post
    id
    name
category
    id
    name
post_category
    id
    post_id
    category_id

数据库

post
|   1   |   post1   |
|   2   |   post2   |
|   3   |   post3   |
category
|   1   |    cat1   |
|   2   |    cat2   |
|   3   |    cat3   |
post_category
|   1   |   1   |   1   |
|   2   |   2   |   1   |
|   3   |   3   |   2   |
|   3   |   2   |   2   |
|   3   |   1   |   3   |
public function getCategory()
{
return $this->belongsToMany(Category::class, 'post_category');
}
$data = Post::with('getCategory')->get();
$categoryId = [1,2];
$data = Post::with('getCategory')->whereHas('category', function ($query) use ($categoryId) {
$query->whereIn('id', $categoryId);
})->orderBy('id','DESC')->get();

共有2个答案

傅献
2023-03-14

显然一切都很好!

一个建议是在belongToMany方法中再添加两个参数,如:

public function getCategory()
{
    return $this->belongsToMany(Category::class, 'post_category', 'post_id', 'category_id');
}

https://laravel.com/api/7.x/Illuminate/Database/Eloquent/Concerns/HasRelationships.html#method_belongsToMany

云联
2023-03-14

您应该将getCategory()函数重命名为simplycategory()。这使得关系名称更加直观,可能会解决您的问题。

然后,您应该能够调用其中有('类别',...)

如果仍然不起作用,只需链接一个-

 类似资料:
  • 这是我在这里的第一篇帖子,而且我是一个初学者,所以请耐心听我说。 我想完成的是创建一个AJAX函数,该函数将以复选框的形式列出所有可用类别,用户可以从中选择。选择并点击“应用”后,我想显示分配给所选类别的帖子中所有标签的列表(也以复选框的形式)。然后用户可以从可用的标签中进行选择,然后在点击最后的“应用”按钮后,将显示相应的帖子。 类似于TED. com的“你感兴趣的是什么?”但是在AJAX中。所

  • 我正在使用高级自定义字段插件,我试图通过分类字段过滤一些自定义帖子,修改WP_Query: 如果我尝试通过文本字段过滤一切正常,WP_Query被修改。但是当字段是一个分类法字段时,我不知道应该传递什么参数,因为它是一个对象。我尝试了分类法名称和分类法ID,但不起作用。 是否可以通过分类字段进行筛选?我应该传递的什么参数?谢谢! 更新-结构: 自定义帖子:“递归操作系统” 自定义分类Slug:'r

  • 我想通过作为字符串的属性名筛选类的集合。假设我有一个名为Person的类,我有它的一个集合,或者是IEnumerable或者是List,我想过滤这个集合,但是我不知道确切的过滤器,我的意思是我不能使用: 让我举一个例子。

  • 我正在使用OctoberCMS制作一个简单的画廊,基于Laravel和Twig。 如何按类别筛选记录? 我现在是这样做的,但我认为这不是一个好的解决方案: 我过滤了html,但是类别之外的所有项目的完整记录仍然存在,导致额外的分页和空白页。 数据库 > “images”表包含图像名称及其标记的类别。 图像列表 URL参数为/gallery/:category?/:页 访问像/gallery/nat

  • 我有模型用户,类别和邮政。帖子属于很多用户,很多类目。用户和类别不相关。我创建了一个自定义数据透视表,其中存储user_id和category_id,以及该表的模型类别块。我如何才能获得用户没有屏蔽的所有帖子?

  • 我正在使用Elementor主题生成器创建一个自定义归档页面,该页面将应用于所有类别页面。传统的“归档”小部件显示所有帖子,而帖子小部件需要一个术语。 如何使用元素自定义查询过滤器在相应的存档页面上动态显示帖子?https://developers.elementor.com/custom-query-filter/