DoctrineMigrationsBundle
编辑本页原则:模式:更新命令或使用SQL语句手动应用数据库更改,迁移允许以安全的方式复制数据库模式中的更改。
在Symfony应用程序中可以通过ob娱乐下载DoctrineMigrationsBundle,它使用外部原则数据库迁移图书馆。读了欧宝官网下载app如果您需要关于迁移的一般介绍。
如果你不使用ob娱乐下载Symfony Flex,你必须在应用程序中手动启用bundle:
1 2 3 4 5 6
/ /配置/ bundles.php//在旧的Symfonyob娱乐下载应用中,启用app/AppKernel.php中的bundle返回[/ /……学说\包\ MigrationsBundle \ DoctrineMigrationsBundle::Class => [“所有”= >真正的]];
1 2 3 4 5 6
/ /配置/ bundles.php//在旧的Symfonyob娱乐下载应用中,启用app/AppKernel.php中的bundle返回[/ /……学说\包\ MigrationsBundle \ DoctrineMigrationsBundle::Class => [“所有”= >真正的]];
命令获取应用程序中迁移的状态状态
命令:
1
$PHP bin/控制台原则:迁移:状态
这个命令将向您显示关于迁移状态的一般信息,例如已经执行了多少个迁移,哪些仍然需要运行,以及正在使用的数据库。
现在,您可以通过生成一个新的空白迁移类来开始处理迁移。稍后,您将了解Doctrine如何为您自动生成迁移。
1
$PHP bin/控制台原则:迁移:生成
看一下新生成的迁移类,你会看到如下内容:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
声明(strict_types =1);名称空间DoctrineMigrations;使用学说\DBAL\模式\模式;使用学说\迁移\AbstractMigration;/** *自动生成迁移:请根据您的需要进行修改!* /最后类Version20180605025653扩展AbstractMigration{公共函数getDescription():字符串{返回”;}公共函数向上(模式$模式):无效{//此up()迁移是自动生成的,请根据您的需要进行修改}公共函数下来(模式$模式):无效{//此down()迁移是自动生成的,请根据您的需要进行修改}}
如果你运行状态
再次执行命令,它会显示你有一个新的迁移要执行:
1
$PHP bin/控制台原则:migrations:status——show-versions
类型中添加一些迁移代码()
而且下()
方法,最后当你准备好时迁移:
1
$PHP bin/控制台原则:迁移:迁移“DoctrineMigrations \ Version20180605025653”
有关如何编写迁移本身的更多信息(即如何填写()
而且下()
方法),参见官方的学说迁移欧宝官网下载app.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
声明(strict_types =1);名称空间应用程序\迁移\工厂;使用学说\迁移\AbstractMigration;使用学说\迁移\版本\MigrationFactory;使用ob娱乐下载\组件\DependencyInjection\ContainerAwareInterface;使用ob娱乐下载\组件\DependencyInjection\ContainerInterface;类MigrationFactoryDecorator实现了MigrationFactory{私人$migrationFactory;私人$容器;公共函数__construct(MigrationFactory$migrationFactory, ContainerInterface$容器){$这->migrationFactory =$migrationFactory;$这->容器=$容器;}公共函数createVersion(字符串$migrationClassName):AbstractMigration{$实例=$这->migrationFactory->createVersion ($migrationClassName);如果($实例运算符ContainerAwareInterface) {$实例->setContainer ($这->容器);}返回$实例;}}
提示
如果您的迁移类实现了该接口ob娱乐下载Symfony \ \ DependencyInjection \ ContainerAwareInterface组件
这个包将自动将默认的symfony容器注入到您的迁移类中(这是因为ob娱乐下载MigrationFactoryDecorator
本例中显示的是该bundle使用的默认迁移工厂)。
教义/迁移依赖于连接字符串中正确配置的数据库服务器版本来管理存储迁移的表,也称为元数据存储。
如果遇到错误元数据存储未更新,请执行sync-metadata-storage命令修复此问题。
执行命令时原则:迁移:迁移
或者建议的命令本身原则:迁移:sync-metadata-storage
请检查数据库连接字符串,并确保定义了正确的服务器版本。如果您正在运行MariaDB数据库,您应该在服务器版本的前缀加上mariadb -
(例:mariadb-10.2.12
).看到configuring_database部分。
MariaDB的连接字符串示例:
1
DATABASE_URL = mysql: / /根:@127.0.0.1:3306 /测试? serverVersion = mariadb-10.4.11
元数据存储未更新,请执行sync-metadata-storage命令修复此问题。
执行命令时原则:迁移:迁移
或者建议的命令本身原则:迁移:sync-metadata-storage
请检查数据库连接字符串,并确保定义了正确的服务器版本。如果您正在运行MariaDB数据库,您应该在服务器版本的前缀加上mariadb -
(例:mariadb-10.2.12
).看到configuring_database部分。1
DATABASE_URL = mysql: / /根:@127.0.0.1:3306 /测试? serverVersion = mariadb-10.4.11