2011-01-30 5 views
3

У меня установлена ​​Doctrine 2 на Zend Framework 1.10 и правильная настройка автозагрузки, включая все необходимые настройки конфигурации в application.ini. Теперь мне нужно (или, я полагаю, сейчас) создать классы Entity с информацией о сопоставлении, чтобы менеджер объектов мог работать с моей базой данных.Создание информации сопоставления с использованием существующей базы данных Doctrine 2

Что я не хочу делать, это написать классы Entity вручную, так как это займет много времени, но я не могу понять, что делать дальше. У инструмента командной строки есть функциональность для создания сущностей, прокси и всех других необходимых классов из существующей схемы?

+0

Теперь мне удалось создать отображение ямля для моей существующей базы данных, и они помещены в APPLICATION_PATH «/ data/yaml». Теперь, когда я пытаюсь использовать orm: generate-entities .. \ library \ Application \ Entity, ожидая его сгенерируйте классы сущностей из сопоставлений yaml, он не работает с сообщением «Нет метаданных для обработки классов» – Kevin

+1

Вы когда-нибудь могли выяснить, что вызвало ошибку «Нет метаданных»? Я могу генерировать сопоставления с использованием YAML/XML, пока я не использую «newDefaultAnnotationDriver» с аннотациями на основе PHP. Это сводит меня с ума! –

ответ

3

Вы можете использовать обратный инженерный инструмент Учение http://www.doctrine-project.org/docs/orm/2.0/en/reference/tools.html#reverse-engineering

Но это также не делает обнаружить все, как указано в ссылке.

Ваш лучший выбор - это обратное проектирование и заполнение остальных вручную ИМО.

3

С помощью инструмента командной строки:

./bin/doctrine orm:convert-mapping --from-database xml ./bin/tmp 

Это будет создавать свои XML-отображения. Затем убедитесь, что при настройке инструмента Доктрина CLI изменить драйвер на XmlDriver

$driver = new \Doctrine\ORM\Mapping\Driver\XmlDriver(array(
    APPLICATION_PATH . '/../bin/tmp'    
)); 
$config->setMetadataDriverImpl($driver); 

Моя конфигурация CLI использует Zend_Application, так что я обычно меняется это в моем Bootstrap.

Теперь запустить

./bin/doctrine orm:generate-entities ./bin/tmp 

Драйвер Xml Метаданные требуется для того, чтобы orm:generate-entities для преобразования из XML в сущности. Если вы используете драйвер аннотации по умолчанию, он преобразует объекты в путь драйвера аннотации к объектам, которые здесь не нужны.

+0

Для Zend 2 (ну на самом деле это просто другой способ) вам нужно обновить файл vendor/doctrine/doctrine-module/bin/doctrine-module.php и добавить следующие данные до двух последних строк: '$ driverImpl = новая \ Doctrine \ ORM \ Mapping \ Driver \ XmlDriver ( \t \t массив ('./ бен/TMP')); ' '/* @var $ эм \ Doctrine \ ORM \ EntityManager */'' $ em = $ application-> getServiceManager() -> get ('doctrine.entitymanager.orm_default'); ' ' $ em-> getConfiguration() -> setMetadataDriverImpl ($ driverImpl); ' – bstricks