gridonic / migration-service-provider
为Silex设计的Doctrine迁移服务提供者。基于knplabs/migration-service-provider
Requires
- php: >=5.3.2
- doctrine/dbal: >=2.1, <=2.4
- gridonic/console-service-provider: ~1.0
- silex/silex: ~1.1
- symfony/finder: ~2.1
This package is not auto-updated.
Last update: 2024-09-10 01:02:31 UTC
README
这是一个为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中获取的。