Я пытаюсь выполнить миграцию различий между файлом схемы 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 будет считываться из базы данных, но это не так.
Чтение об этом здесь Я выполнил следующие шаги, чтобы убедиться, что основная процедура не ошибается.
- Изменить файл yaml
- генерировать-миграции-diff для diff
ваш текущий (измененный) yaml с
ваши (неизменные) модели. Это будет
создать файл миграции в вашем
каталог доктрин / миграций (или
какой бы ни был установлен migrations_path
в конфиге вашей доктрины).
- миграция для запуска созданной миграции
на шаге 2 и измените вашу базу данных
- generate-models-yaml для генерации нового
классы, основанные на вашем файле yaml.
Они идут туда, где вы указали свой
сгенерированные модели идут (models_path в
ваш конфиг доктрины).
- generate-sql для создания файла SQL.
Это пойдет туда, где ваша доктрина
Конфигурация sql_path установлена в.
$ numChanges всегда одинаков, когда файл yaml схемы не изменяется. Он не сравнивается с текущей базой данных, которая синхронизирована и работает.
Может кто-нибудь заметить ошибку или, возможно, сказать мне правильный способ сделать это?