Symfony 4 Использует неправильное пространство имен при создании сущности

#php #symfony #doctrine-orm #doctrine #symfony4

#php #symfony #doctrine-orm #доктрина #symfony4

Вопрос:

На самом деле я сталкивался с этой проблемой несколько раз, когда при использовании php bin / console make:entity он использует неправильное пространство имен для ManagerRegistry в репозитории.

Это то, что он туда вставил:

 use DoctrinePersistenceManagerRegistry;
 

Который затем выдает следующую ошибку:

 Cannot autowire service "AppRepositoryPrivateCallBookingAvailabilityRepository": argument "$registry" of method "__construct()" has type "DoctrinePersistenceManage  
  rRegistry" but this class was not found.  
 

Глядя на другие репозитории, это не всегда так, те, которые работают, на самом деле используют:

 use DoctrineCommonPersistenceManagerRegistry;
 

Есть идеи, почему он это делает?

Ответ №1:

Вам нужно понизить версию symfony/maker-bundle , потому DoctrineCommonPersistenceManagerRegistry что она была переименована в DoctrinePersistenceManagerRegistry в Doctrine, и похоже, что ваша версия Doctrine имеет старое имя этого класса.

Также в качестве опции вы можете обновить Doctrine до новейшей версии.

Более подробную информацию вы можете найти здесь https://github.com/symfony/maker-bundle/pull/518 .