Получение SQL из доктрины миграции - PullRequest
5 голосов
/ 23 января 2010

Я искал способ получить операторы SQL, которые создаются сгенерированным файлом миграции. Они расширяют Doctrine_Migration_Base. По сути, я хотел бы сохранить SQL как сценарии изменений.

Путь выполнения приводит меня к Doctrine_Export, в котором есть методы, которые создают оператор SQL и выполняют их. Я не нашел способа попросить только их. Методы экспорта в Doctrine_Export работают только на моделях Doctrine_Record, а не на сценариях миграции.

Из командной строки './doctrine migrate version #' путь идет:

  • Doctrine_Cli :: Run (CMD)
  • Doctrine_Task_Migrate :: setArguments (арг)
  • Doctrine_Task_Migrate :: Execute ()
  • Doctrine_Migration :: мигрировать (к)
  • Doctrine_Migration_Process :: Doctrine_Export :: различные создавать, удалять, изменять методы с помощью sql эквиваленты.

Кто-нибудь занимался этим раньше? Я действительно не хотел бы изменять базовые файлы Doctrine. Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 25 января 2010

Учитывая предложение Роба Фарли, я изменил:

  • Doctrine_Core :: мигрировать
  • Doctrine_Task_Migrate :: Execute

Когда вызывается метод execute, проверяется необязательный аргумент 'dryRun'. Если правда затем создается экземпляр Doctrine_Connection_Profiler. Значение 'dryRun' затем передается на метод Doctrine_Core :: migrate. Значение «dryRun», равное true, позволяет откатить изменения после выполнения операторов SQL. Когда метод возвращается, профилировщик анализируется и непустые операторы SQL не содержащие'igration_version ', сохраняются и отображаются в терминале.

0 голосов
/ 23 января 2010

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

...