1
나는 내 사용자 지정 SQL 함수를 추가하려고합니다.Doctrine2 Symfony2 사용자 정의 함수 파서
내 함수는 다음과 같다 : 구문 분석에 대한
DISTANCE(15.154454, 5.121444, -15.321111, 15.12111)
나는이 파서를 추가
use Doctrine\ORM\Query\Lexer;
class Distance extends \Doctrine\ORM\Query\AST\Functions\FunctionNode
{
public $lat_a = null;
public $lat_b = null;
public $lon_a = null;
public $lon_b = null;
public function parse(\Doctrine\ORM\Query\Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->lat_a = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_COMMA);
$this->lon_a = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_COMMA);
$this->lat_b = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_COMMA);
$this->lon_b = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return 'DISTANCE(' .
$this->lat_a->dispatch($sqlWalker) . ', ' .
$this->lon_a->dispatch($sqlWalker) . ', ' .
$this->lat_b->dispatch($sqlWalker) . ', ' .
$this->lon_b->dispatch($sqlWalker) .
')';
}
}
괜찮아,이 잘 작동하지만 난 "-15.321111"와 같은 부정적인 VAR를 사용하는 경우, 나는 오류 500을 얻는다. ... 긍정적 인 var와 더불어, 누구나는 ok 다.
누구든지 부정적인 var 구문 분석에 도움이 될 수 있습니까?
그것은 도움을 확인 들으이다. 구문 분석에서 ArithmeticExpression을 사용하기 만하면됩니다. –