Я пытаюсь сгенерировать объекты в symfony2 из существующей пустой базы данных (довольно большой, и было бы настоящей болью создавать объекты с нуля). К сожалению, я столкнулся с довольно большой проблемой.
Когда я пытаюсь вызвать следующую команду (на окнах, если она что-то меняет):
php app/console doctrine:mapping:convert --force --from-database annotation ./src/GOutside/GOBundle/Resources/config/doctrine
Я получил следующее сообщение:
Нет классов метаданных для обработки.
Перед публикацией я:
Версия 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), вы можете добавить настраиваемое сопоставление в разделе конфигурации доктрины. Например, чтобы отобразить тип точки в виде строки, которую вы можете написать:
doctrine: dbal: //Other connection parameters mapping_types: point: string
для второй проблемы вам нужно определить первичный ключ для этих таблиц, это может быть новое поле или может быть составным первичным ключом.
Имела та же проблема, и оказалось, что это кеш:
console c:c
Решила проблему.
Я получил эту ошибку
Database does not have any mapping information.
в моем случае это было потому, что у меня есть 2 таблицы, названные такими:
когда я попытался с помощью этой команды:
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"
Надеюсь, эта помощь.