Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Doctrine 2 DQL MySQL tương đương với ROUND ()?

Bạn cần triển khai chức năng DQL tùy chỉnh cho điều đó.

Có một số ví dụ trong DoctrineExtensions .

Bạn có thể triển khai nó như sau:

<?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);
    }
}

Sau đó, bạn có thể đăng ký nó trong cấu hình trong khi khởi động 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. Các ký tự tiếng Thổ Nhĩ Kỳ không được hiển thị chính xác

  2. Cách sử dụng phân trang với laravel DB ::select query

  3. Không có hoạt động nào được phép sau khi câu lệnh đóng

  4. Kiểm tra các bản sao trước khi chèn

  5. cập nhật mysql với regexp