14

我想这真的是一个微不足道和愚蠢的问题,但我不知道如何在我的 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');

提前非常感谢您,再次为这个问题感到抱歉,但我找不到教程(这让我感到更加内疚,因为我想连教程都没有的时候太琐碎了)

4

3 回答 3

29

您可以通过作曲家安装它。只需将其添加到您的 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
于 2013-06-03T11:32:27.463 回答
1

@beberlei 的有线媒体也有一个不错的分支,其中包括更多的 datetime_functions,如DATE()本身:

这是 https://github.com/beberlei/DoctrineExtensions 的未经批准的分支,因为他似乎已经脱离了网格并且没有合并拉取请求。

不幸的是,0.1 版只包含了 fork 而不是所有的功能。我们正在等待一个稳定的版本:

请在我的作曲家 #2 中创建标记的稳定版本

但是你可以手动添加它们,因为稳定版本已经出来了。

于 2014-07-29T11:13:25.673 回答
1

下面是如何使用 DoctrineBundle 在 Symfony 的上下文中使用 DoctrineExtensions。

首先安装包DoctrineExtensions:

composer require beberlei/doctrineextensions

doctrine.yaml然后将要包含在应用程序中的 DQL 函数添加到您的学说配置(文件)中:

doctrine:
    # Register types this way in the dbal config part
    dbal:
        types:
            carbondatetime: DoctrineExtensions\Types\CarbonDateTimeType
    # Register DQL functions in the ORM part
    orm:
        dql:
            string_functions:
                FIND_IN_SET: DoctrineExtensions\Query\Mysql\FindInSet
            numeric_functions:
                SIN: DoctrineExtensions\Query\Mysql\Sin
            datetime_functions:
                DATE: DoctrineExtensions\Query\Mysql\Date

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

于 2019-05-12T19:45:08.413 回答