dtforce/ fornettey-doctrine-migrations
Nette 对 Doctrine Migrations 的实现
v0.1.2-beta
2016-01-22 18:53 UTC
Requires
- php: >=5.6
- doctrine/migrations: ~1.0
- nette/di: ~2.3
- symfony/console: ~2.7|~3.0
Requires (Dev)
- dtforce/nette-console: dev-master
- dtforce/nette-doctrine: dev-master
- nette/bootstrap: ~2.3
- tracy/tracy: ~2.3
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) { // ... } // ... }