特定 SQL 查询到原则翻译



我需要在symfon下在教义中转录这种请求:

SELECT node.name
FROM nested_category AS node,
        nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
        AND parent.name = 'ELECTRONICS'
ORDER BY node.lft;

我试了这个,但它不起作用:

    $nodesDQL = $this->createQueryBuilder('childs')
        ->select('childs')
        ->from('AppBundle:NestedCategory', 'parent')
        ->join('AppBundle:NestedCategory', 'childs')
        ->where(new BetweenExpression('childs.lft', 'parent.lft', 'parent.right'))
        ->andWhere('parent = :parent')
        ->setParameter('parent', $node);

我不能这样加入,任何想法都欢迎!

我想到了子请求,但在学说上如何?

问候。

PS:我是法国人,有英语困难。

我认为如果

每个孩子都有父 ID ,则不需要加入父级,它可以只是一个标准。

例如

    $qb = $this->createQueryBuilder('children');
    $qb->select('children')
        ->from('AppBundle:NestedCategory', 'children')
        ->where($qb->expr()->between('children.lft', ':parentLft', ':parentRgt'))
        ->andWhere('children.parent = :parent')
        ->setParameter('parent', $node)
        ->setParameter('parentLft', $node->getLft()) // assuming you can get lft/rgt from parent
        ->setParameter('parentRgt', $node->getRgt())
        ->getQuery()
        ->getResult()
    ;

这将获得父节点的所有子节点,其中子节点左侧位于父节点右/左之间。

相关内容

  • 没有找到相关文章