我创建了名为DATESTRING的理论扩展,但我遇到了错误。
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%M ))"MonthStringFunction.php
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;
/**
* "MONTHSTRING" "(" SimpleArithmeticExpression ")"
*
* @category DoctrineExtensions
*/
class MonthStringFunction extends FunctionNode
{
public $date;
/**
* @override
*/
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return "MONTHSTRING(DATE_FORMAT(" . $sqlWalker->walkArithmeticPrimary($this->date) . ", %M ))"; //**here some error**
}
/**
* @override
*/
public function parse(\Doctrine\ORM\Query\Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->date = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}TestRepository.php
$qb = $this->createQueryBuilder('tst');
$qb->select('MONTHSTRING(tst.joinDate) as month_string');
$data = $qb->getQuery()->getArrayResult();
return $data;发布于 2014-02-15 10:56:25
DATE_FORMAT函数的format参数需要用引号括起来,因为它是一个字符串。试试这个:
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return "MONTHSTRING(DATE_FORMAT(" . $sqlWalker->walkArithmeticPrimary($this->date) . ", '%M' ))"; //**here some error**
}https://stackoverflow.com/questions/21794106
复制相似问题