rhubarbphp/scaffold-database-migrations

数据库迁移的Module.Migrations实现

1.0.2 2018-10-10 16:28 UTC

This package is auto-updated.

Last update: 2024-09-11 15:13:12 UTC


README

此脚手架是对Migrations模块的特定实现。它包括

DatabaseMigrationsStateProvider,它使用Stem存储应用程序的本地状态。

DataMigrationScript是MigrationScriptInterface的实现,提供了额外的辅助方法以执行常见的数据迁移。

脚本注册

除非注册,否则脚本不会运行。可以在MigrationsModule上调用registerMigrationScripts($scriptsArray)来注册脚本。

   MigrationsManager::getMigrationsManager()->registerMigrationScripts([
       SplitNameColumnScript::class,
       DeleteAllImagesScript::class,
       UpdatedGdprInfoScript::class
   ]);

数据迁移脚本

DataMigrationScripts实现了MigrationsScriptInterface,并在脚本执行期间包含可调用的常见迁移类型。

class ContactNameSplitting extends DataMigrationScript
{
        public function execute()
        {
            foreach (Image::all(new Equals('active', false)) as $image) {
                unlink($image->filePath);
                $image->delete();
            }
            
            try {
                $this->updateEnumOption(
                    User::class,
                    'status',
                    'on line',
                    'online'
                );
            } catch (\Rhubarb\Crown\Exceptions\ImplementationException $e) {
            }
        }
    
        public function version(): int
        {
            return 18;
        }

        public function priority(): int
        {
            return 10;
        }
}