Правильный способ сделать разницу миграций - PullRequest
1 голос
/ 05 января 2011

Я пытаюсь выполнить миграцию различий между файлом схемы yaml и моей базой данных, используя следующий код

    $migration = new Doctrine_Migration($migrationsPath);
    $diff = new Doctrine_Migration_Diff(null, $yamlSchemaPath, $migration);
    $changes = $diff->generateMigrationClasses();

    $numChanges = count($changes, true) - count($changes);

Из того, что я понял, $ from = null здесь будет означать, что сравнение from будет считываться из базы данных, но это не так.

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

  1. Изменить файл yaml
  2. генерировать-миграции-diff для diff ваш текущий (измененный) yaml с ваши (неизменные) модели. Это будет создать файл миграции в вашем каталог доктрин / миграций (или какой бы ни был установлен migrations_path в конфиге вашей доктрины).
  3. миграция для запуска созданной миграции на шаге 2 и измените вашу базу данных
  4. generate-models-yaml для генерации нового классы, основанные на вашем файле yaml. Они идут туда, где вы указали свой сгенерированные модели идут (models_path в ваш конфиг доктрины).
  5. generate-sql для создания файла SQL. Это пойдет туда, где ваша доктрина Конфигурация sql_path установлена ​​в.

$ numChanges всегда одинаков, когда файл yaml схемы не изменяется. Он не сравнивается с текущей базой данных, которая синхронизирована и работает.

Может кто-нибудь заметить ошибку или, возможно, сказать мне правильный способ сделать это?

...