Я создаю пользовательскую функцию 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 )
: критерий равен 1 ... когда я устанавливаю критерий на 0, возвращаются все объекты в базе данных, но когда я устанавливаю критерий 1 или 2 или 3 ... у меня есть какой-либо объект