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

सिद्धांत और सिम्फनी 2 के साथ कस्टम डीक्यूएल फ़ंक्शन का उपयोग करते समय त्रुटि

कई खोज के बाद, मुझे आखिरकार इसका समाधान मिल गया है। मुझे दो समस्याएं थीं:पहला मेरा पार्स फ़ंक्शन गलत था, दूसरा, मैंने अपने ऑर्डर में एक SQL फ़ंक्शन को कॉल किया (धन्यवाद सेराड )।

तो, यहाँ मेरी सही कक्षा है:

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 और MongoDB के बीच डेटा सिंक्रोनाइज़ेशन

  4. रेल MySQL स्थापित कर रहा है - mysql2 स्थापित करने में त्रुटि:त्रुटि:मणि देशी एक्सटेंशन बनाने में विफल

  5. पायथन mySQL - उद्धरण से बचना