protected function parseAndApplyModifyOrderByWalker(\Doctrine\ORM\Query $query) { $parser = new \Doctrine\ORM\Query\Parser($query); $AST = $parser->QueryLanguage(); $walker = new \abexto\xdc\orm\query\tools\ModifyOrderByWalker($query, null, []); $walker->walkSelectStatement($AST); return $AST; }
public function parseDql($dql, $hints = array()) { $query = $this->_em->createQuery($dql); $query->setHint(Query::HINT_FORCE_PARTIAL_LOAD, true); $query->setDql($dql); foreach ($hints as $key => $value) { $query->setHint($key, $value); } $parser = new \Doctrine\ORM\Query\Parser($query); // We do NOT test SQL output here. That only unnecessarily slows down the tests! $parser->setCustomOutputTreeWalker('Doctrine\\Tests\\Mocks\\MockTreeWalker'); return $parser->parse(); }
/** * Parses the order by clause and transforms it into AST * @param string $orderByClause * @return \Doctrine\ORM\Query\AST\OrderByClause */ protected function parseOrderByClause($orderByClause) { if ($orderByClause === '') { return new \Doctrine\ORM\Query\AST\OrderByClause([]); // Empty order by ===> RETURN } // We use the doctrine DQL parser here. // Fortunately the function OrderByClause is public, thus we can call it directly. // Let's hope that it stays public and never breaks $dummyQuery = $this->_getQuery()->getEntityManager()->createQuery('order by ' . $orderByClause); $parser = new \Doctrine\ORM\Query\Parser($dummyQuery); $parser->getLexer()->moveNext(); // Move to first token return $parser->OrderByClause(); }
protected function doParseWithoutCache() { $parser = new \Doctrine\ORM\Query\Parser($this->query); return $parser->parse(); }