gridonic/migration-service-provider

为Silex设计的Doctrine迁移服务提供者。基于knplabs/migration-service-provider

v1.0.8 2014-12-26 17:13 UTC

This package is not auto-updated.

Last update: 2024-09-10 01:02:31 UTC


README

Build Status

这是一个为silex和doctrine设计的简单自制模式迁移系统。

安装

像往常一样,只需在您的composer.json中包含gridonic/migration-service-provider并注册服务。

$app->register(new \Gridonic\Provider\MigrationServiceProvider(), array(
    'migration.path' => __DIR__.'/../src/Resources/migrations',
    'migration.register_before_handler' => true,
    'migration.migrations_table_name'   => 'migration_version',
));

少说废话,我想写迁移!

也许,这个文档并不完整。所以这里有更多信息的链接

运行迁移

有两种运行迁移的方式

使用before处理器

如果您在注册服务时传递了migration.register_before_handler(设置为true),则会为迁移注册一个before处理器。这意味着迁移管理器将在您的应用程序每次访问时运行。

您可能希望在开发模式下启用此行为,但在生产中请勿这样做!

使用migration:migrate命令

如果您正确安装了控制台服务提供者,则可以使用migration:migrate命令,这样您的应用程序就不必在每次调用Web应用程序时都运行迁移。

编写迁移

迁移由一个包含迁移类的单个文件组成。按照设计,迁移文件必须命名为类似<version>_<migration_name>Migration.php,并位于src/Resources/migrations中,类的名称为<migration_name>Migration。例如,如果您的迁移向foo表添加了一个bar字段,并且是您的模式中的第5个迁移,则应将您的文件命名为05_FooBarMigration.php,类名为FooBarMigration

除了这些命名约定之外,您的迁移类必须扩展Gridonic\Migration\AbstractMigration,它提供了一些帮助方法,例如getVersion以及迁移方法的默认实现。

迁移方法由4个方法组成,按此顺序调用

  • schemaUp
  • appUp
  • schemaDown
  • appDown

schemaUp

您得到一个Doctrine\DBAL\Schema\Schema实例,您可以添加、删除或修改数据库的模式。

appUp

schemaUp之后,您可以编辑应用程序 - 您将获得一个Silex\Application实例。在这里,您可以在添加列后修改现有数据。

schemaDown

appUp之后,您可以再次修改数据库的模式。您将获得一个可以使用的Doctrine\DBAL\Schema\Schema实例。

appDown

最后但同样重要的是,您可以再次使用一个Silex\Application实例。修改现有数据或类似的内容。

迁移信息

您还应该了解最后一个方法:getMigrationInfos。此方法应返回对迁移的说明性描述(它是可选的,您可以跳过其实现)。如果您使用Twig,我们内置了一个migration_infos用于twig - 可能是一个仅用于开发模式的函数。

然后您可以使用类似以下内容使用它

      Migration informations: {{ migration_infos }}

许可证

MigrationServiceProvider是在MIT许可证下授权的。原始库是从KnpLabs中获取的。