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

在主类别中显示子类别的文章

韩佐
2023-03-14

我有一张分类表

cat_id, cat_name, parent_id, cat_slug

我有文章表如下

art_id, cat_id, art_title, art_content, author_id .....

和我的用户表作为

user_id, username, pw, .....

因此与这些数据我想显示所有的文章这是列在子类别

例如:

主要类别的url是:mydomain。子类别的com/cat/business url为:mydomian。com/cat/商业/广告

因此,当人们访问主类别时,它应该显示主类别上列出的文章的子类别,即使cat_id未被提及为主类别。我想在“业务类别”页面上列出业务子类别文章的所有子类别。

有什么疑问,我应该努力实现这一点

我们将不胜感激谢谢

共有2个答案

曾飞雨
2023-03-14
select * from category where parent_id=cat_id

在这里,对于一个给定的cat_id,它将获取该类的所有子类。

谭云瀚
2023-03-14

首先,要获取您的类别。。。

如果您的类别嵌套只有两层(父级和子级),或者您只对直接子类别感兴趣(即不是子类别的子类别),那么您的SQL非常简单:

SELECT cat_id FROM category_table WHERE cat_id = $catid OR parent_id = $catid

如果嵌套更深,则需要递归查询,直到类别嵌套为止。例如,如果您将自己限制为3个级别,则可以使用SQL这样做:

SELECT cat_id FROM category_table ct1
WHERE cat_id = $catid OR parent_id = $catid
OR parent_id in (SELECT cat_id FROM category_table WHERE parent_id = ct1.cat_id)

类似地,对于4级深度嵌套,可以使SQL更加复杂:

SELECT cat_id FROM category_table ct1
WHERE cat_id = $catid OR parent_id = $catid
OR parent_id in (SELECT cat_id FROM category_table ct2 WHERE parent_id = ct1.cat_id
                 OR parent_id in
                 (SELECT cat_id FROM category_table ct3 WHERE parent_id = ct2.cat_id))

等等。

如果没有固定的嵌套深度,则需要在代码中执行循环。

一旦你有了所有的类别,那么你就查询文章。所以对于一个简单的2级依赖,你会得到

SELECT * FROM article_table
WHERE cat_id in (SELECT cat_id FROM category_table WHERE cat_id = $catid OR parent_id = $catid)

同样,对于3级嵌套,您将获得

SELECT * FROM article_table
WHERE cat_id in
    (SELECT cat_id FROM category_table ct1
     WHERE cat_id = $catid OR parent_id = $catid
     OR parent_id in (SELECT cat_id FROM category_table WHERE parent_id = ct1.cat_id))

等等...

 类似资料:
  • 我需要一些关于Woocommerce类别显示选项的帮助。在Wordpress仪表板中,我按照以下链接全局设置类别显示选项<外观- 有三种显示选项可用。 展示产品 目前,选择了第三个选项,它显示子类别以及父类别和子类别下的所有产品。但是,我想排除子类别下的所有产品。换句话说,我只想在父类别下显示子类别和产品。 我在几个教程网站上找到了以下片段。代码完全按照我想要的方式工作,但它也禁用了管理产品搜索和

  • 我正试图通过WoodPress主题中的一个函数从woocommerce获取产品类别,我已经做到了: 这将按层次列出所有顶级类别及其下的子类别,但我有子类别(子类别)的子类别,因此如何列出这些子类别。

  • 我是拉威尔的新手,在构建“真实世界”项目的同时,我也在努力学习。 我的项目是机密网站。目前,我正在按步骤显示所有类别、子类别和每个子类别下的项目数量。 在数据库中,我描述了名为的表中的所有类别(主类别和子类别)。有一个名为的列,它是父类别(如果是子类别)的id。 在模型我有 在我的控制器中 在视图中,这就是我显示父类别的方式 我尝试的子类别是在foreach中添加一个 错误是 未定义的属性:Ill

  • 我正在使用店面主题建立一个Woocommerce商店,我想知道如何在“按类别商店”主页部分显示子类别而不是类别? 我需要显示产品子类别,因为我的根产品类别是唯一的(“集合”),其中包含所有主要子类别。

  • 我正在研究一个场景,其中有多个父类别,每个父类别都有多个子类别。 我已经设置了父类别来显示子类别,而不是产品。 下面是我当前的层次结构: 父类别1 子类别1 子类别2 子类别3 父类别2 子类别4 一切都很好,但我想做一件额外的事情,显示所有子类别的描述,当它们显示在父类别下。 我知道子类别的标题在查看父类别时默认显示,但是,我找不到一种方法来覆盖默认循环以显示父类别中子类别的描述。 任何帮助都将

  • 问题内容: 我想在选择 列表(下拉列表)中显示类别,子类别和子子类别,就像WordPress在其管理面板中显示的方式一样。 首先看一下我的数据库表(tb_categories)- 数据库表 我想要以下HTML格式的输出- 输出 两项“无”和“未分类”在代码中进行了硬编码。我 想知道如何 使用选择列表选项以层次结构顺序显示类别及其子类别。 我正在尝试使用自我连接的以下sql查询。这 是- And t