Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Doctrine 2 DQL MySQL odpowiednik ROUND()?

Musisz zaimplementować niestandardową funkcję DQL za to.

Oto kilka przykładów w DoctrineExtensions .

Możesz to zaimplementować w następujący sposób:

<?php

namespace MyApp\DQL;

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

class Round extends FunctionNode
{
    private $arithmeticExpression;

    public function getSql(SqlWalker $sqlWalker)
    {

        return 'ROUND(' . $sqlWalker->walkSimpleArithmeticExpression(
            $this->arithmeticExpression
        ) . ')';
    }

    public function parse(\Doctrine\ORM\Query\Parser $parser)
    {

        $lexer = $parser->getLexer();

        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);

        $this->arithmeticExpression = $parser->SimpleArithmeticExpression();

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

Następnie możesz zarejestrować go w konfiguracji podczas ładowania ORM:

$config = new \Doctrine\ORM\Configuration();

$config->addCustomNumericFunction('ROUND', 'MyApp\DQL\Round');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. numer portu serwera mysql

  2. Jak uzyskać skróconą nazwę miesiąca z daty w MySQL?

  3. Jak dodać ciąg do wartości kolumny w MySQL?

  4. Jak ponownie połączyć utracone połączenia za pomocą EclipseLink?

  5. WYBIERZ najnowszy rekord z wartością inną niż null w jednej kolumnie