Как использовать beberlei / DoctrineExtensions в Symfony 4?
Мне нужна функция в запросах SQL / DQL и я установил пакет DoctrineExtensions ( <tcode id="207438"></tcode>) для этого:
$ composer require beberlei/doctrineextensions:^1.3.0
Теперь я хочу начать использовать его в своей Symfony.
4.4
(на самом деле Силиус
1.8
с платформой API
2.5
) заявление.
/config/packages/doctrine.yaml
parameters:
...
doctrine:
dbal:
...
orm:
auto_generate_proxy_classes: ...
entity_managers:
default:
mappings:
Main:
...
dql:
string_functions:
replace: DoctrineExtensions\Query\Mysql\Replace
$queryBuilder
->andWhere('REPLACE(o.code, ".", "") = :code_p1')
->setParameter('code_p1', $value);
Собственно все. Или это должно быть все, что нужно. Но когда я пытаюсь использовать
REPLACE
функция, я получаю эту ошибку:
Попытка загрузить класс «Replace» из пространства имен «DoctrineExtensions\Query\Mysql». \ NВы забыли инструкцию «использовать» для другого пространства имен?
Проблема не нова, на StackOverflow уже было несколько подобных сообщений:
- Как установить расширения Doctrine в проект Symfony2
- beberlei / DoctrineExtensions GROUP_CONCAT в проблеме Symfony 4
- Попытка загрузить класс «Месяц» из пространства имен «DoctrineExtensions\Query\Mysql». Вы забыли оператор «использовать» для другого пространства имен?
Но предложенные там решения не решают мою проблему:
- установить пакет: уже сделано, запустив
composer require beberlei/doctrineextensions:^1.3.0
- очистить кеш: выполняется путем запуска
./bin/console cache:clear
- переустановите пакет: выполняется запуском
composer remove beberlei/doctrineextensions
и снова устанавливаем пакет
Класс существует в правильном
namespace
и правильный файл:
Что здесь может пойти не так? Как заставить работать автозагрузку и DoctrineExtensions?
Через некоторое время и перезапуск контейнера он просто начал работать ... Я также больше не могу воспроизвести проблему. Должно быть, проблема в кешировании. Возможно, предварительная загрузка PHP .