Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка при използване на персонализирана DQL функция с Doctrine и Symfony2

След няколко търсения най-накрая намерих решението. Имах два проблема:първо моята функция за синтактичен анализ беше грешна, второ, извиках SQL функция в моя orderBy (благодаря ви Церад ).

И така, ето моят правилен клас:

namespace Ypok\YPoliceBundle\DQL;

use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;

class CastFunction extends FunctionNode
{
    public $firstDateExpression = null;
    public $unit = null;    

    public function parse(\Doctrine\ORM\Query\Parser $parser)
    {
        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
        $this->firstDateExpression = $parser->StringPrimary();

        $parser->match(Lexer::T_AS);

        $parser->match(Lexer::T_IDENTIFIER);
        $lexer = $parser->getLexer();
        $this->unit = $lexer->token['value'];

        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
    }

    public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
    {
        return sprintf('CAST(%s AS %s)',  $this->firstDateExpression->dispatch($sqlWalker), $this->unit);
    }
}

И сега мога да използвам перфектно SQL функцията 'CAST' в моето хранилище:

$qb = $this->_em->createQueryBuilder();
$qb->select('d, CAST(d.myField AS UNSIGNED) AS sortx')
   ->from('\Test\MyBundle\Entity\MyEntity', 'd')
   ->orderBy('sortx', 'ASC')

return $qb->getQuery()->getResult();

С най-добри пожелания



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL тригер преди Проверка на вмъкване на стойност

  2. Как да съхранявам часовата зона на потребителите в mysql?

  3. Мога ли да възстановя една таблица от пълен mysql mysqldump файл?

  4. Как да дублирате база данни с помощта на phpMyAdmin

  5. SQLite в Android:очакват се външни ключове и <table constraint>