自定义dql函数返回任何数据

时间:2019-01-16 12:11:17

标签: php symfony doctrine dql

我在项目中创建了自定义函数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设置为...我有任何对象

0 个答案:

没有答案