添加“日期()“;在Zend Framework 2项目中使用Doctrine2 SQL


Add "DATE()" to Doctrine2 SQL in Zend Framework 2 Project

我希望在我的ZF2应用程序中添加MySQL的DATE到我的Doctrine设置中。我已经做了文档声称是必要的:

在我的模块onMergeConfig

$config['doctrine']['connection']['orm_default']['datetime_functions'] = [
    'date' => 'Erudite'Doctrine'DQL'Date',
]
// ...
$configListener->setMergedConfig($config);

…我也尝试过通过module.config.php配置,同样的处理…

我已经添加了Date:

namespace Erudite'Doctrine'DQL;
use Doctrine'ORM'Query'Lexer;
use Doctrine'ORM'Query'AST'Functions'FunctionNode;

class Date extends FunctionNode
{
    public $date;
    public function getSql('Doctrine'ORM'Query'SqlWalker $sqlWalker)
    {
        return "DATE(" . $sqlWalker->walkArithmeticPrimary($this->date) . ")";
    }
    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);
    }
}

这很不幸地导致了这个错误:

An abstract factory could not create an instance of doctrine.entitymanager.ormdefault(alias: doctrine.entitymanager.orm_default).

任何想法?

自定义函数的正确配置键应该是

$config['doctrine']['configuration']['orm_default']['datetime_functions']

(configuration而不是connection)