添加"日期()"到Zend Framework 2项目中的Doctrine2 SQL

时间:2015-08-17 15:25:40

标签: php zend-framework2

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

在我的模块中onMergeConfig

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

...我也试过通过module.config.php进行配置,同样的交易......

我已添加日期:

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).

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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

configuration而不是connection