dtforce/fornettey-doctrine-migrations

Nette 对 Doctrine Migrations 的实现

v0.1.2-beta 2016-01-22 18:53 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:20:41 UTC


README

Doctrine\Migrations 实现到 Nette。

安装

composer require dtforce/doctrine-migrations

config.neon 中注册扩展

extensions:
	migrations: DTForce\DoctrineMigrations\DI\MigrationsExtension

配置

config.neon 的默认值

migrations:
	table: doctrine_migrations # database table for applied migrations
	directory: %appDir%/../migrations # directory, where all migrations are stored
	namespace: Migrations # namespace of migration classes

使用方法

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

php bin/console

迁移数据库更改

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

php bin/console migrations:migrate

如果您迷路了,只需使用 -h 选项获取帮助

php bin/console migrations:migrate -h

创建新的迁移

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

php bin/console 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
{

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

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

}

就是这样简单!

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

特性

清理目录

如果您在一个目录中有一个超过 100 个迁移,可能会变得杂乱。如何让它更好?您可以在子目录中创建一个并将一些迁移移到那里。我会按年份或目的分组。配置中设置的 directory 的所有子目录都将被扫描。

它可以看起来像这样

/migrations/
   - VersionZZZ.php
/migrations/2015/
   - VersionYYY.php
/migrations/basic-data
   - VersionXXXX.php

注入迁移

namespace Migrations;


final class Version20140801152432 extends AbstractMigration
{

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


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

	// ...

}