我需要在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:我在英语方面遇到困难。答案 0 :(得分:1)
如果每个孩子都有父ID,我认为你不需要加入父母,这可能只是一个标准。
E.g。
$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()
;
这将为您提供父节点的所有子节点,其中子节点位于父节点右侧/左侧之间。