Как установить расширения 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');
Спасибо вам большое заблаговременно и жалею еще раз на вопрос, но я не смог найти учебник (что заставляет меня чувствовать себя еще более виноватым, потому что я думаю, что это слишком тривиально, когда нет даже учебника)
Ответы
Ответ 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
Это пример, не стесняйтесь приспосабливаться к вашим потребностям (вы можете удалить разделы).