Создание объектов из базы данных

Я пытаюсь сгенерировать объекты в symfony2 из существующей пустой базы данных (довольно большой, и было бы настоящей болью создавать объекты с нуля). К сожалению, я столкнулся с довольно большой проблемой.

Когда я пытаюсь вызвать следующую команду (на окнах, если она что-то меняет):

php app/console doctrine:mapping:convert --force --from-database annotation ./src/GOutside/GOBundle/Resources/config/doctrine 

Я получил следующее сообщение:

Нет классов метаданных для обработки.

Перед публикацией я:

  • Подтвердил, что моя конфигурация в порядке (я могу подключиться к базе данных),
  • Мой узел создан, и указан путь, указанный выше.
  • То же самое происходит, когда я пытаюсь преобразовать в xml / yml, как при попытке создания сопоставления аннотаций.

Версия Symfony – 2.4.4, версия для PHP – 5.5.3.

Спасибо за помощь заранее 🙂

Изменить после ответа xiidea

Когда я пытаюсь использовать

 php app/console doctrine:mapping:import --force GOBundle xml 

как было предложено @xiidea, я получил следующее сообщение:

В базе данных нет информации о сопоставлении.

Ваш случай хорошо документирован на веб-сайте Symfony под названием «Как создавать сущности из существующей базы данных»,

Как указано в документации:

Первым шагом к созданию классов сущностей из существующей базы данных является запрос Doctrine для интроспекции базы данных и создания соответствующих файлов метаданных. Файлы метаданных описывают класс сущности для генерации на основе полей таблицы.

Используя следующую команду (если короткое имя вашего пакета – GOutsideGOBundle )

$ php app / console doctrine: mapping: import –force GOutsideGOBundle xml

Затем вам нужно позвонить.

php app / console doctrine: generate: entity GOutsideGOBundle

Если вам нужно создать классы сущностей с сопоставлениями аннотаций, то перед doctrine:generate:entities вам необходимо выполнить следующую команду doctrine:generate:entities

php app / console doctrine: mapping: преобразование аннотации ./src

Путь должен быть только ./src вместо ./src/GOutside/GOBundle/Resources/config/doctrine

Обновлено:

Если в вашей конфигурации все правильно, тогда получение Database does not have any mapping information. ошибок Database does not have any mapping information. маловероятно !! Я не уверен в этой ошибке. Но в соответствии с вашей схемой таблицы базы данных есть некоторые проблемы, которые помешают вам создать информацию о сопоставлении.

  1. Ваша таблица содержит специальный тип, который доктрина не может обработать.
  2. В таблице базы данных имеется несколько таблиц без первичного ключа. Doctrine не поддерживает обратное проектирование из таблиц, у которых нет первичного ключа

Чтобы решить проблему (1), вы можете добавить настраиваемое сопоставление в разделе конфигурации доктрины. Например, чтобы отобразить тип точки в виде строки, которую вы можете написать:

 doctrine: dbal: //Other connection parameters mapping_types: point: string 

для второй проблемы вам нужно определить первичный ключ для этих таблиц, это может быть новое поле или может быть составным первичным ключом.

Имела та же проблема, и оказалось, что это кеш:

 console c:c 

Решила проблему.

Я получил эту ошибку

 Database does not have any mapping information. 

в моем случае это было потому, что у меня есть 2 таблицы, названные такими:

  1. mockstore_category
  2. mockstore_product

когда я попытался с помощью этой команды:

 sudo php app/console doctrine:mapping:import --filter="MockstoreProduct" --force MockizartStoreBundle yml 

в Database does not have any mapping information. ошибок нет Database does not have any mapping information. появился. но это не --filter="MockstoreCategory" , когда я использовал его для генерации --filter="MockstoreCategory" .

Таким образом, чтобы создать сопоставление для таблицы mockstore_product , это должно быть:

 php app/console doctrine:mapping:import --filter="Product" --force MockizartStoreBundle yml 

--filter="Product" NOT --filter="MockstoreProduct"

Надеюсь, эта помощь.