我有以下关闭表:
我想要的是获取没有祖先的行(根节点)。
在上图中我想得的只是第一行。
我尝试了以下DQL:
public function findAllRootGroups()
{
$subQuery = $this->createQueryBuilder('c')
->select('c')
->where('c.depth > 0');
$query = $this->createQueryBuilder('c2');
$query->where($query->expr()->notIn('c2.id', $subQuery->getDQL()));
$roots = $query->getQuery()->getResult();
echo '<pre>'; \Doctrine\Common\Util\Debug::dump($roots); echo '</pre>';die;
}
但是它返回了深度= 0的所有行。
那么,我怎样才能获得根节点?
感谢。
答案 0 :(得分:0)
您好像要搜索与ancestor_id
相同descendant_id
,id
且深度为0的行
$this->createQueryBuilder('c')
->where('c.ancestorId = c.id')
->andWhere('c.descendantId = c.id')
->andWhere('c.depth = 0')
;