Ответ 1
Вы можете добиться того, чего хотите, используя пользовательскую функцию:
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;
class DateFunction extends FunctionNode
{
private $arg;
public function getSql(SqlWalker $sqlWalker)
{
return sprintf('DATE(%s)', $this->arg->dispatch($sqlWalker));
}
public function parse(Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->arg = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}
Затем зарегистрируйте эту функцию в своем коде:
$em->getConfiguration()->addCustomDatetimeFunction('DATE', 'DateFunction');
И ваш DQL-запрос будет работать!