我想这是一个非常琐碎和愚蠢的问题,但我不知道如何在我的Symfony2项目中安装Doctrine Extensions - https://github.com/beberlei/DoctrineExtensions。因为MONTH,YEAR功能,我需要它们。我应该把文件夹放在哪里?我应该放整个DoctrineExtensions
文件夹吗?在哪里写这个:
<?php
$classLoader = new \Doctrine\Common\ClassLoader('DoctrineExtensions', "/path/to/extensions");
$classLoader->register();
在单独的文件中?把它放在哪里以及如何调用它?
然后我只需要使用它们:
public function findOneByYearMonthDay($year, $month, $day)
{
$emConfig = $this->getEntityManager()->getConfiguration();
$emConfig->addCustomDatetimeFunction('YEAR', 'DoctrineExtensions\Query\Mysql\Year');
$emConfig->addCustomDatetimeFunction('MONTH', 'DoctrineExtensions\Query\Mysql\Month');
$emConfig->addCustomDatetimeFunction('DAY', 'DoctrineExtensions\Query\Mysql\Day');
非常感谢你,并且再次对这个问题表示遗憾,但是我找不到教程(这让我感到更加内疚,因为我认为如果没有这样的话,那就太琐碎了# 39;甚至是教程)
答案 0 :(得分:29)
您可以通过composer安装它。只需将其添加到您的composer.json然后php composer.phar update beberlei/DoctrineExtensions
"beberlei/DoctrineExtensions": "*",
然后您可以将功能注册到您的ORM
doctrine:
orm:
auto_generate_proxy_classes: %kernel.debug%
entity_managers:
default:
auto_mapping: true
dql:
datetime_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
答案 1 :(得分:1)
@beberlei的有线媒体还有一个很好的分支,其中包含更多的datetime_functions,如 DATE()本身:
不幸的是,版本0.1只包括fork而不是所有函数。 我们正在等待稳定的发布:
Please create taged stable version for set in my composer #2
但你可以手动添加它们,一个稳定的版本就出来了。
答案 2 :(得分:1)
这里是如何使用DoctrineBundle在Symfony的上下文中使用DoctrineExtensions。
首先安装软件包DoctrineExtensions:
http-equiv="Content-Security-Policy"
然后将要包含在应用程序中的DQL函数添加到您的学说配置(composer require beberlei/doctrineextensions
文件中):
doctrine.yaml
这是一个示例,可以随时根据需要进行调整(可以删除部分)。