繁体   English   中英

如何从PHP的子类别中获取父节点?

[英]How to get parent Node from Child category in PHP?

我的项目中有一部分结构数据库,在这种情况下,我想从仅具有variant的类别中创建Tree。

这是我的数据库结构

在此处输入图片说明

有些类别表具有name和slug,而类别组表是因为我有多种类别,还有category_rel_variant用于与另一个对象的关系(在我的情况下是variant)

我的目标是显示具有该Tree的变体和重组的类别。

类别

| id | name | slug | partition | 
| 1  | Animal | animal | null |
| 2  | monkey   | monkey | null |
| 3  | Fruit   | fruit | null |
| 4  | apple    | apple  | null |  
| 5  | Banana   | banana | null |

类别组

| id | cat_id | groups | description | parent | count |
| 1  | 1      | variant | animal variant | 0 | 0 |
| 2  | 3      | variant | fruit variant | 0 | 0 |
| 3  | 4      | variant | apple | 3 | 0 |
| 4  | 2      | variant | monkey | 1 | 0 |
| 5  | 5      | variant | banana | 3 | 0 |

categories_rel_variant

| id | cat_group_id | variant_id | sort |
| 1  | 5            | 1 | 1 |
| 2  | 1            | 2 | 2 | 

变种

| id | name | {ect}
| 1  | green Banana is nice fruit
| 2  | there are monkey

当我尝试使用此查询

    SELECT gp.id AS  'id_cat_group', gp.cat_id AS  'fk_cat_id', gp.parent, gp.groups, cat.id AS  'cat_id', cat.name
FROM categories_groups gp
LEFT JOIN categories cat ON ( gp.cat_id = cat.id ) 
LEFT JOIN categories_rel_variant crv ON ( gp.id = crv.cat_group_id ) 
LEFT JOIN variant vr ON ( crv.variant_id = vr.id ) 
LEFT JOIN categories t4 ON ( gp.parent = t4.id ) 
WHERE gp.groups =  'variant_category'
AND crv.variant_id
IN ( 1, 2 ) 
LIMIT 0 , 30

这只是给我当前具有变体的类别。 我的问题是我仍然不能成为该类别的父母。

从查询的结果,我想重建树像这样

array(3) {
      ["id"]=>
      string(1) "1"
      ["name"]=>
      string(1) "Fruit"
      ["sub_category"]=>
       array(2) {
          ["id"]=>
          string(1) "5"
          ["name"]=>
          string(23) "Banana",
          ['variant'] => {--- array variant(ect) ---}

        }
    } 

等等 ..

任何建议如何使像我的意思?

要获得父级,您必须在categories表上执行另一个LEFT JOIN

...
LEFT JOIN categories t4 ON t0.parent = t4.id

根据以上内容对问题进行了编辑,但以下内容也很重要。

然后调整SELECT以包括来自此新表别名的字段:

SELECT ..., t4.name AS subcat_name ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM