在嵌套集中重复节点名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在嵌套集中重复节点名称相关的知识,希望对你有一定的参考价值。

我正在检索叶子的路径,并且嵌套集中有重复的叶子名称。执行查询后,重复叶名称的不同路径连接在一起。

我试图修复SQL代码但无法达到预期的结果

foreach($leafs as $id=>$leaf) {
            $sql_fetch = 'SELECT parent.name, node.category_id '
                . 'FROM vender_category AS node, '
                . 'vender_category AS parent '
                .'WHERE (node.lft BETWEEN parent.lft AND parent.rgt) '
                .'AND node.name = "'.$leaf['name'].'" '
                .'ORDER BY parent.lft ';

            $venderCategories[] = Yii::app()->db->createCommand($sql_fetch)->queryAll();
        }
$categoryChains = array();
        foreach ($venderCategories as $key => $venderCategory) {
                $categoryChains[] = array(
                    'name' => implode(' / ', array_column($venderCategory, 'name')),
                    'category_id' => implode(array_unique( array_column($venderCategory, 'category_id'))),
                );
        }

这段代码将叶子的路径放在一起,就像这样

array ( 'name' => 'smartphone / accessories / car / accessories' );

我想要2个具有相同名称'配件'的叶子像这样分开:

array ( 'name' => 'smartphone / accessories );

array ( 'name' => 'car / accessories' );

提前致谢!

答案

实际上这很容易,但因为我是编程的新手,对我来说很难:)

在这里我的修复。只需添加一个条件即可查询。

 $sql_fetch = 'SELECT parent.name, node.category_id '
                . 'FROM vender_category AS node, '
                . 'vender_category AS parent '
                .'WHERE (node.lft BETWEEN parent.lft AND parent.rgt) '
                .'AND node.name = "'.$leaf['name'].'" '
                **.'AND node.category_id = "'.$leaf['category_id']. '" '**
                .'ORDER BY parent.lft ';

以上是关于在嵌套集中重复节点名称的主要内容,如果未能解决你的问题,请参考以下文章

处理嵌套节点的最佳方法(不同的名称,相同的内容)

Pymongo - 在 mongodb 副本集中查找主/主节点名称

在节点模块名称中使用 @ 符号 [重复]

如果在树中嵌套其他值,则获取文本文件(yaml)中的键值[重复]

使用实体框架 6 代码优先方法时,在程序集中未找到上下文类型 [重复]

在模板化类[重复]中使用嵌套嵌套类时,“依赖名称不是类型”