Проблемы обратного проектирования доктрины Symfony 4

Я пытаюсь использовать доктрину для создания сущностей в symfony 4 из базы данных mysql.

Во-первых, я создал пакет под названием AppBundle.php в каталоге под названием AppBundle.

Затем я генерирую xml схемы, используя:

php bin/console doctrine:mapping:import --force AppBundle xml

Это создаст папку с именем Resources в папке AppBundle, а затем другую папку с именем config и doctrine, и все файлы orm.xml будут помещены в нее.

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

php bin/console doctrine:mapping:convert annotation ./src/Entity

Это создает следующие папки в папке Entity:

  • Entity
    • App
    • AppBundle
      • Entity

И все файлы сущностей .php помещаются во вторую папку Entity.

введите здесь описание изображения

Файлы сущностей .php имеют следующее пространство имен

namespace App\AppBundle\Entity;

В моем контроллере я добавил пространство имен

use App\AppBundle\Entity\User;

и использовать доктрину, чтобы получить

$users = $this->getDoctrine()
        ->getRepository(User::class)
        ->findAll();

но когда я запускаю приложение, я получаю эту ошибку

введите здесь описание изображения

Теперь, когда я перемещаю вторую папку Entity в папку AppBundle. Приложение работает.

введите здесь описание изображения

Есть ли способ сгенерировать объекты без создания Symfony папки приложения или папки AppBundle?


person Eddy    schedule 28.02.2018    source источник


Ответы (1)


  1. AppBundle устарел в Symfony 4. Рекомендуемый способ - поместить весь ваш код в пространство имен \ App (\App\Entity\User). Теперь это поведение по умолчанию для всех генераторов Symfony.

  2. Если вы хотите использовать пакет, вам следует:

2.1. настроить доктрину как orm: mappings: AppBundle: is_bundle: true type: xml prefix: 'AppBundle\Entity' 2.2. использовать php bin/console doctrine:mapping:convert annotation ./src

Также вам следует правильно настроить автозагрузку композитора и конфиги Symfony.

person VolCh    schedule 02.03.2018
comment
Рекомендуемый - поместить весь ваш код в пространство имен \ App. Вы имеете в виду это? php bin / console doctrine: сопоставление: импорт --force \ App xml - person Eddy; 04.03.2018