Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सिद्धांत 2 DQL MySQL राउंड () के बराबर है?

आपको एक कस्टम DQL फ़ंक्शन लागू करने की आवश्यकता है उसके लिए।

DoctrineExtensions में कुछ उदाहरण हैं। ।

आप इसे निम्न की तरह कार्यान्वित कर सकते हैं:

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

फिर आप 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. sql INSERT के लिए mongodb अनुवाद... चुनें

  2. mySql में सेकंड (या मिलीसेकंड) को टाइमस्टैम्प (या सिर्फ एक स्ट्रिंग जो एक तारीख की तरह दिखती है) में कैसे परिवर्तित करता है

  3. PHP/MySQL - सरणी डेटा को JSON के रूप में संग्रहीत करना, खराब अभ्यास?

  4. Mysql में innodb को कैसे निष्क्रिय करें?

  5. php स्क्रिप्ट में इष्टतम MYSQL क्वेरी संख्या क्या है?