DoctrineExtensions(Beberlei)不起作用-条令2
我安装了,但是mysql无法正常工作 我的自动加载器中有:DoctrineExtensions(Beberlei)不起作用-条令2,doctrine,doctrine-orm,dql,doctrine-extensions,Doctrine,Doctrine Orm,Dql,Doctrine Extensions,我安装了,但是mysql无法正常工作 我的自动加载器中有: $doctrineExtensions = new Doctrine\Common\ClassLoader('DoctrineExtensions', ROOT.DS.'library'); $doctrineExtensions->register(); 当我尝试执行以下dql语句时 SELECT YEAR(e.eventdate) FROM \Entities\Event e 我得到以下错误:错误:预期已知函数,在/
$doctrineExtensions = new Doctrine\Common\ClassLoader('DoctrineExtensions', ROOT.DS.'library');
$doctrineExtensions->register();
当我尝试执行以下dql语句时
SELECT YEAR(e.eventdate) FROM \Entities\Event e
我得到以下错误:错误:预期已知函数,在/usr/local/lib/php/Doctrine/ORM/Query/QueryException.php中得到'YEAR'
在我的档案顶部有
use \DoctrineExtensions\Query\Mysql;
我可以看到,如果我键入以下内容,它可以找到类:
$test = \DoctrineExtensions\Query\Mysql\Year::getSql();
但如果我打字就不会
$test = Year::getSql();
似乎缺少某些实现,但无法找出问题所在。您需要注册函数:
$classLoader = new \Doctrine\Common\ClassLoader('DoctrineExtensions');
$classLoader->register();
...
$config = $this->getEntityManager()->getConfiguration();
$config->addCustomDatetimeFunction('YEAR', 'DoctrineExtensions\Query\Mysql\Year');
有点晚了:)但它会帮助像我这样的其他人从客户那里得到一个旧项目
您必须注册DoctrineExtension目录的命名空间:
$classLoader = new \Doctrine\Common\ClassLoader('DoctrineExtensions', APPPATH . 'libraries/vendor/beberlei');
$classLoader->register();
现在,当您从composer获得DoctrineExtensions
时,它位于src
目录下,因此只需向上移动src
目录的内容(在DoctrineExtensions
下)并向配置添加所需的扩展:
$config->addCustomDatetimeFunction('YEAR', 'DoctrineExtensions\Query\Mysql\Year');
请注意,其他答案中使用的
Doctrine\Common\ClassLoader
现在已被弃用
正确的方法是:
use DoctrineExtensions\Query\Mysql\Year;
...
$config = new \Doctrine\ORM\Configuration();
// Can also be:
// $config = \Doctrine\ORM\Tools\Setup::createConfiguration();
// Or:
// $config = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration([...]);
$config->addCustomDateTimeFunction('YEAR', Year::class);
您还可以使用完全限定的类名从配置文件中加载,使用doctor\ORM\configuration
setCustomDateTimeFunctions([…])
,如下所示:
doctrine:
orm:
dql:
datetime_functions:
year: DoctrineExtensions\Query\Mysql\Year
month: DoctrineExtensions\Query\Mysql\Month