zf2 генерирующий объект с доктриной ORM

У меня есть классы Entity, созданные с помощью Doctrine ORM и ZF2.

Я изменил структуру таблицы и хочу обновить класс сущности, поэтому я пытаюсь регенерировать класс сущности, но это не работает.

Я использовал следующий код:

vendor / doctrine / doctrine-module / bin / doctrine-module orm: convert-mapping --namespace = "Album \ Entity \" --force --from-database annotation ./module/Album/src/clear

Получил ошибку:

[Doctrine \ ORM \ Mapping \ MappingException]
Свойство "status" в "Album \ Entity \ TestRun" уже было объявлено, но оно должно быть объявлено только один раз
orm: convert-mapping [--filter = ". .. "] [--force] [--from-database] [--extend [=" ... "]] [--num-space [=" ... "]] [--namespace [= "..."]] к типу dest-path

Я хочу повторно сгенерировать класс сущности для конкретной таблицы


person notnotundefined    schedule 13.01.2014    source источник
comment
Не должно быть двух внешних ключей для одного и того же столбца в таблице   -  person khanz    schedule 16.07.2014


Ответы (2)


Если вы измените структуру своего файла Entity, простой \vendor\bin\doctrine-module orm:schema-tool:update --force изменит таблицу в соответствии с вашим определением Entity.

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

Вы можете полностью очистить кеш так:

\vendor\bin\doctrine-module orm:clear-cache:query 
\vendor\bin\doctrine-module orm:clear-cache:result
\vendor\bin\doctrine-module orm:clear-cache:metadata
person cptnk    schedule 14.01.2014
comment
Он хочет обновить класс сущности из измененной таблицы db, а не в противоположном направлении, как вы описали. - person vlr; 05.11.2014
comment
Вероятно, это возможно, но, на мой взгляд, это плохая практика. Структурные изменения должны производиться внутри организации. Затем обновил через командную строку. - person cptnk; 05.11.2014

Как упоминалось выше, это может быть плохой практикой, но тем не менее я использую следующие команды для достижения результата, о котором вы спрашиваете:

vendor\bin\doctrine-module orm:convert-mapping --filter='Evaluation' --namespace='MyModule\Entity\\' --force --from-database annotation ./module/MyModule/src/   

и еще одна команда для генерации геттеров и сеттеров:

vendor\bin\doctrine-module orm:generate-entities --filter='Evaluation' ./module/MyModule/src/ --generate-annotations=true
person vlr    schedule 13.11.2014