Подтвердить что ты не робот

Как установить расширения Doctrine в проекте Symfony2

Я предполагаю, что это действительно тривиальный и глупый вопрос, но я не знаю, как установить Doctrine Extensions - https://github.com/beberlei/DoctrineExtensions в моем Проект Symfony2. Мне нужны они из-за функций 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');

Спасибо вам большое заблаговременно и жалею еще раз на вопрос, но я не смог найти учебник (что заставляет меня чувствовать себя еще более виноватым, потому что я думаю, что это слишком тривиально, когда нет даже учебника)

4b9b3361

Ответ 1

Вы можете установить его через композитор. Просто добавьте его в ваш 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

Ответ 2

Также есть хорошая вилка от wiredmedia от @beberlei, которая включает в себя еще больше datetime_functions, таких как DATE():

Это несанкционированная вилка https://github.com/beberlei/DoctrineExtensions, так как он, кажется, ушел с сетки и не объединяет запросы на тягу.

К сожалению, версия 0.1 включает в себя только вилку, а не все функции. Мы ждем стабильного выпуска:

Создайте старую стабильную версию для набора в моем композиторе # 2

Но вы можете добавить их вручную, чтобы стабильная версия отсутствовала.

Ответ 3

Вот как использовать DoctrineExtensions в контексте Symfony с помощью DoctrineBundle.

Сначала установите пакет DoctrineExtensions:

composer require beberlei/doctrineextensions

Затем добавьте в свою конфигурацию doctrine (файл 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

Это пример, не стесняйтесь приспосабливаться к вашим потребностям (вы можете удалить разделы).