zenify / doctrine-migrations

此包已弃用且不再维护。作者建议使用 nettrine/migrations 包。

Doctrine Migrations 到 Nette 的实现

v4.2 2016-12-28 22:00 UTC

README

Build Status Quality Score Code Coverage Downloads this Month Latest stable

Doctrine\Migrations 实现到 Nette。

安装

composer require zenify/doctrine-migrations

config.neon 中注册扩展

extensions:
	- Arachne\ContainerAdapter\DI\ContainerAdapterExtension
	- Arachne\EventDispatcher\DI\EventDispatcherExtension
	migrations: Zenify\DoctrineMigrations\DI\MigrationsExtension

	# Kdyby\Doctrine or another Doctrine integration
	doctrine: Kdyby\Doctrine\DI\OrmExtension

配置

config.neon 默认值

migrations:
	table: doctrine_migrations # database table for applied migrations
	column: version # database column for applied migrations
	directory: %appDir%/../migrations # directory, where all migrations are stored
	namespace: Migrations # namespace of migration classes
	codingStandard: tabs # or "spaces", coding style for generated classes
	versionsOrganization: null # null, "year" or "year_and_month", organizes migrations to subdirectories

使用

打开您的 CLI 并运行命令(基于 Kdyby\Console 集成)

php www/index.php

然后您应该看到所有可用的命令

CLI commands

将更改迁移到数据库

如果您想将现有的迁移应用到数据库中,只需运行迁移命令

php www/index.php migrations:migrate

如果迷失方向,请使用 -h 选项获取帮助

php www/index.php migrations:migrate -h

创建新的迁移

要创建新的空迁移,只需运行

php www/index.php migrations:generate

新的空迁移将在您的迁移目录中创建。您可以在那里添加 SQL 语句。

将新角色 "superadmin" 添加到 user_role 表的迁移将看起来像这样

namespace Migrations;

use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;

/**
 * New role "superadmin" added.
 */
final class Version20151015000003 extends AbstractMigration
{

	public function up(Schema $schema)
	{
		$this->addSql("INSERT INTO 'user_role' (id, value, name) VALUES (3, 'superadmin', 'Super Admin')");
	}
	

	public function down(Schema $schema)
	{
		$this->addSql("DELETE FROM 'user_role' WHERE ('id' = 3);");
	}

}

就是这样简单!

有关进一步使用,请参阅 Symfony 包文档

功能

迁移组织

如果您在一个目录中有超过 100 个迁移,可能会变得杂乱。幸运的是,Doctrine 迁移可以根据年份或按年份和月份对迁移进行组织。您可以在配置文件 config.neon 中配置它(见上面)。

/migrations/2015/11
	- VersionXXX.php
/migrations/2015/12
	- VersionYYY.php
/migrations/2016/01
	- VersionZZZ.php

注入迁移

注意:这并不是最佳实践,所以只有在没有其他方法的情况下才使用它。

namespace Migrations;

final class Version20140801152432 extends AbstractMigration
{

	/**
	 * @inject
	 * @var Doctrine\ORM\EntityManagerInterface
	 */
	public $entityManager;


	public function up(Schema $schema)
	{
		// ...
	}

	// ...

}

测试

composer check-cs
vendor/bin/phpunit

贡献

规则很简单

  • 新功能需要测试
  • 所有测试必须通过
  • 每个 PR 一个功能

我们将很高兴合并您的功能!