我在项目中创建了自定义函数dql,但是当我在dql中使用此函数时,我有任何异议:此函数计算小时之间的差异(仅小时而非日月或仅年小时)
代码功能dql:
<?php
namespace Symdrik\CentralBundle\DQL;
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\Parser;
use Doctrine\ORM\Query\SqlWalker;
/**
* DateAddFunction ::=
* "DIFF_HOUR" "(" ArithmeticPrimary ", -" ArithmeticPrimary Identifier ")"
*/
Class DifferenceWIthHour extends FunctionNode
{
public $firstDate;
public $secondDate;
public function parse(Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->firstDate = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_COMMA);
$this->secondDate = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
public function getSql(SqlWalker $sqlWalker)
{
return 'round('.(strtotime($this->firstDate->dispatch($sqlWalker)) . '-' . strtotime($this->secondDate->dispatch($sqlWalker)))/3600 .',1)';
}
}
现在在查询中,我在查询中添加此行,但返回空:
(:statusEcartEstimated = 'test' AND DIFF_HOUR(tRecord.test,applications.appliedAt) >= :criterion )
:criterion为1 ...当我将标准设置为0时,返回数据库中的所有对象,但是当我将标准1或2或3设置为...我有任何对象