повторяющиеся имена узлов во вложенном множестве - PullRequest
0 голосов
/ 26 марта 2019

Я извлекаю пути листьев и повторяющиеся имена листьев во вложенном множестве. После выполнения запроса были объединены различные пути, где повторяется имя листа.

Я пытался исправить код 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' );

Заранее спасибо!

1 Ответ

0 голосов
/ 26 марта 2019

На самом деле это было легко, но из-за того, что я новичок в программировании, мне было довольно сложно:)

Вот мое исправление. просто добавьте одно условие к запросу.

 $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 ';
...