我希望在我的ZF2应用程序中添加MySQL的DATE到我的Doctrine设置中。我已经做了文档声称是必要的:
在我的模块onMergeConfig
$config['doctrine']['connection']['orm_default']['datetime_functions'] = [
'date' => 'EruditeDoctrineDQLDate',
]
// ...
$configListener->setMergedConfig($config);
…我也尝试过通过module.config.php
配置,同样的处理…
我已经添加了Date:
namespace EruditeDoctrineDQL;
use DoctrineORMQueryLexer;
use DoctrineORMQueryASTFunctionsFunctionNode;
class Date extends FunctionNode
{
public $date;
public function getSql(DoctrineORMQuerySqlWalker $sqlWalker)
{
return "DATE(" . $sqlWalker->walkArithmeticPrimary($this->date) . ")";
}
public function parse(DoctrineORMQueryParser $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
)