Intereting Posts
Пароль MYSQL ENCRYPT, но как сделать DECRYPT php сохраняет загруженные файлы, так как не ожидается Как добавить расширение select2 в качестве фильтра в CGridView на Yii Запустите функцию JavaScript из оператора php if Сохранение пользовательского поля продукта и его отображение на странице корзины Тип PHPStorm, указывающий подклассы базового слоя Как я могу выполнить функцию PHP в действии формы? Создание SAN CSR в PHP Yoast SEO Plugin не распознает контент из шаблона WordPress Кто-нибудь создал класс, похожий на PHP, в код пользователя (не родной)? PHP, используйте strtotime для вычитания минут из переменной даты и времени? Исходное шифрование PHP – эффективность и недостатки PHP: как использовать сеанс на одной странице, пока загружается другая страница с sesson Как получить узлы на первом уровне с помощью PHP DOMDocument? Вставка изображения с помощью PHP и FPDF, не удалось загрузить большое изображение

Создание единого объекта из существующей базы данных с помощью symfony2 и доктрины

Можно ли создать единый объект из базы данных с помощью консольного инструмента Symfony2?

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

Любые предложения будут оценены!

У меня была та же проблема, вы должны сделать так:

php app/console doctrine:mapping:convert metadata_format \ ./src/App/MyBundle/Resources/config/doctrine \ --from-database \ --filter="Yourtablename" 

затем

 php app/console doctrine:mapping:import AppMyBundle \ metadata_format --filter="Yourtablename" 

Где metadata_format – это файл, который вы хотите сгенерировать (например, xml, yml, аннотация)

И наконец

 php app/console doctrine:generate:entities AppMyBundle --no-backup 

Подобно этой доктрине будет загружаться только сущность, в которой вы нуждаетесь. Просто будьте осторожны на фильтре, вы должны использовать CamelCase!

Надеюсь, что это поможет вам

Для третьей команды доктрина продолжала восстанавливать все файлы Entity. Добавив имя объекта после пакета, он создал только объект, который меня интересовал.

 php app/console doctrine:generate:entities AppMyBundle:Yourtablename --no-backup 

Простое рабочее решение для аннотации параметров Symfony 2.7 и для [/ xml / yml] см. http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

сделать 3 команды в 3 этапа:

 $ php app/console doctrine:mapping:import --force AppBundle xml --filter="Meeting" 

( ПРИМЕЧАНИЕ. Если ваше имя базы данных является my_meeting вам нужно будет изменить его на MyMeeting в filter="MyMeeting" для доктрины, чтобы найти имя вашей таблицы. Это потому, что доктрина всегда будет filter="MyMeeting" подчеркивания и добавлять filter="MyMeeting" к вашему имени таблицы. нет, вы получите эту ошибку: «В базе данных нет информации о сопоставлении» .)

 $ php app/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="Meeting" 

( ПРИМЕЧАНИЕ: убедитесь, что у вас есть namespace AppBundle\Entity; как namespace AppBundle\Entity; ниже в файле класса Meeting.php следующим образом:

 <?php /** * Created by PhpStorm. * User: * Date: 03-Sep-2015 * Time: 3:23 PM */ namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; 

Если не добавить его.)

где:

  • AppBundle – это именно ваш «AppBundle» в Symfony 2.7
  • Встреча – это целевая таблица (чувствительная к верблюжью)

Чтобы быть уверенным, проверьте этот каталог:

ЦСИ \ AppBundle / Ресурсы / конфигурации / Доктрина / Meeting.orm.xml

И УБЕДИТЕСЬ, что у вас есть только .xml-файлы для таблицы, в которой вы хотите создать файлы классов сущностей, а другие нет. Затем запустите эту команду ниже, чтобы создать методы get и set для вашего класса сущности, который вы создали ранее

$ php app / console doctrine: generate: entity AppBundle: Meeting –no-backup

ПРИМЕЧАНИЕ 2. В качестве последнего шага вы должны удалить xml-доктрину orm db-файла, например, src\AppBundle/Resources/config/doctrine/VisitorData.orm.xml

Это работает очень хорошо для меня.

Для объяснения читайте: http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

Комментарий @ fyrye, который в настоящее время скрыт, заслуживает кредита, хотел добавить это, чтобы его не пропустили другие. Это подход:

 /** @var \Doctrine\DBAL\Connection $connection */ $config = $connection->getConfiguration(); // for excluding an specific table $config->setFilterSchemaAssetsExpression('/^(table_to_reverse_engineer_1|table_to_reverse_engineer_2).*$/'); 

источник: https://coderwall.com/p/jofhdw/doctrine-tell-which-tables-to-work-with

У меня возникли проблемы при запуске следующей команды из-за большого количества плохо определенных устаревших таблиц

 php ./vendor/bin/doctrine orm:convert-mapping --force --from-database annotation ./src/UI/Entity/ 

Оказывается, флаг -filter фильтрует только ПОСЛЕ того, как он прочитал метаданные из всех ваших таблиц, которые, если у них нет первичных ключей или есть какая-то другая проблема,

Я бы оставил это как комментарий к принятому ответу, но я новичок.

Для таких, как я, у которых были проблемы с переключателем -filter, отображающим несколько таблиц с совпадающими строками в именах, можно использовать шаблон.

Примеры имен таблиц:

Поставщик вендораКонтакт

 php app/console doctrine:mapping:convert metadata_format \ ./src/App/MyBundle/Resources/config/doctrine \ --from-database \ --filter="Vendor" 

Эта команда преобразует обе таблицы, а не только Vendor. Если вам нужен только Vendor, а не VendorContact, используйте шаблон в файле –filter:

 php app/console doctrine:mapping:convert metadata_format \ ./src/App/MyBundle/Resources/config/doctrine \ --from-database \ --filter="\bVendor\b" 

Надеюсь, что кто-то поможет!

Прекрасно работает с Symfony 3.

Если вы получаете «Нет классов метаданных для обработки». сообщение попытайтесь преобразовать ваше имя-tablename в оболочку верблюда Doctrine в параметре фильтра.

«my_table_name» должно быть записано как «MyTableName».

У меня была точно такая же проблема с Symfony 2.4 и MySQL.

Ни один из обходных решений, опубликованных выше, не работал для меня.

Я закончил создание новой базы данных с таблицами, которые я хочу извлечь (это может быть легко сделать, потому что MySQL предоставляет сценарий создания).

Затем изменил соединение с этой новой базой данных и выполнил команду извлечения сущности оттуда.

Кажется, это немного радикально, но я не буду создавать объекты вручную.

надеюсь, это поможет

Ни один из ответов не был подходящим для меня, используя Symfony 3 . Я закончил:

 php bin/console doctrine:mapping:import --force MyBundle xml --filter="MyTable" php bin/console doctrine:mapping:convert annotation ./src --filter="MyTable" php bin/console doctrine:generate:entities MyBundle:MyTable --path ./src 

Не работает ни одно из них для моего symfony 3.3. Поэтому я просто создал копию каталога и повторно сгенерировал все сущности в каталоге копирования. Затем я скопировал требуемые объекты в моем исходном каталоге.

-filter не работает из-за этой проблемы. https://github.com/symfony/symfony/issues/7717