如何在Symfony2项目中安装Doctrine Extensions

时间:2013-06-03 10:46:39

标签: symfony doctrine

我想这是一个非常琐碎和愚蠢的问题,但我不知道如何在我的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;甚至是教程)

3 个答案:

答案 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()本身:

This is an unsanctioned fork of https://github.com/beberlei/DoctrineExtensions since he seems to have gone off grid and is not merging pull requests.

不幸的是,版本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

这是一个示例,可以随时根据需要进行调整(可以删除部分)。