I have a problem converting a sql query to dql. Can anyone help me.
This is what i got so far:
$query = $this->em->createQuery("
UPDATE MyBundle:Tree AS n
JOIN MyBundle:Tree AS movingNode ON movingNode.id = :node
JOIN MyBundle:Tree AS parentNode ON parentNode.id = :parent
SET
n.lft = n.lft +
IF (parentNode.lft < movingNode.lft,
IF (n.lft >= movingNode.rgt + 1, 0,
IF (n.lft >= movingNode.lft, parentNode.lft - movingNode.lft + 1,
IF (n.lft >= parentNode.lft + 1, movingNode.rgt - movingNode.lft + 1 , 0
)
)
),
IF (n.lft >= parentNode.lft + 1, 0,
IF (n.lft >= movingNode.rgt + 1, -movingNode.rgt + movingNode.lft - 1,
IF (n.lft >= movingNode.lft, parentNode.lft - movingNode.rgt, 0
)
)
)
),
n.rgt = n.rgt +
IF (parentNode.lft < movingNode.lft,
IF (n.rgt >= movingNode.rgt + 1, 0,
IF (n.rgt >= movingNode.lft, parentNode.lft - movingNode.lft + 1,
IF (n.rgt >= parentNode.lft + 1, movingNode.rgt - movingNode.lft + 1 , 0
)
)
),
IF (n.rgt >= parentNode.lft + 1, 0,
IF (n.rgt >= movingNode.rgt + 1, -movingNode.rgt + movingNode.lft - 1,
IF (n.rgt >= movingNode.lft, parentNode.lft - movingNode.rgt, 0
)
)
)
)
WHERE parentNode.lft < movingNode.lft OR parentNode.lft > movingNode.rgt;
")->setParameter('node', $node)->setParameter('parent', $parent);
It seems like i need to split it into subquerys or in more querys. Iam not shure.
Also it seems like there isent support for update and join in dql.