Как использовать 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 уже было несколько подобных сообщений:

Но предложенные там решения не решают мою проблему:

  • установить пакет: уже сделано, запустив composer require beberlei/doctrineextensions:^1.3.0
  • очистить кеш: выполняется путем запуска ./bin/console cache:clear
  • переустановите пакет: выполняется запуском composer remove beberlei/doctrineextensions и снова устанавливаем пакет

Класс существует в правильном namespace и правильный файл:

Что здесь может пойти не так? Как заставить работать автозагрузку и DoctrineExtensions?


Через некоторое время и перезапуск контейнера он просто начал работать ... Я также больше не могу воспроизвести проблему. Должно быть, проблема в кешировании. Возможно, предварительная загрузка PHP .

0 ответов

Другие вопросы по тегам