2012-03-18 11 views
0

私はdoctrine 2でmysqlのLEFT機能をどのように使うことができますか?クエリは次のようになりますDoctrine LEFT mysql function

SELECT LEFT(myfield, N) FROM mytable 

答えて

2

thisのように自分で実装できます。

+0

ありがとうございました – Stefano

+0

@Stefanoようこそ。 –

0
<?php 

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

/** 
* JsonbExistence ::= "LEFT('a', 'b')" 
* 
* This will be converted to: "LEFT('a', 'b')" 
* 
*/ 
class LeftFunction extends FunctionNode 
{ 

    public $column = null; 
    public $regexp = null; 

    public function parse(\Doctrine\ORM\Query\Parser $parser) 
    { 
     $parser->match(Lexer::T_IDENTIFIER); 
     $parser->match(Lexer::T_OPEN_PARENTHESIS); 
     $this->column = $parser->ArithmeticPrimary(); 
     $parser->match(Lexer::T_COMMA); 
     $this->regexp = $parser->ArithmeticPrimary(); 
     $parser->match(Lexer::T_CLOSE_PARENTHESIS); 
    } 

    public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) 
    { 
     return sprintf('LEFT(%s, %s)', $this->column->dispatch($sqlWalker), $this->regexp->dispatch($sqlWalker)); 
    } 
}