DoctrineMigrationsBundle
编辑该页面原则:模式:更新命令或手动应用数据库更改SQL语句,迁移允许复制数据库模式的变化在一个安全的方式。
迁移在Symfony应用程序通过欧宝娱乐app下载地址DoctrineMigrationsBundle使用外部教义数据库迁移图书馆。读了欧宝体育电话图书馆的如果你需要一个总体介绍迁移。
如果你不使用欧宝娱乐app下载地址Symfony Flex在应用程序中,您必须手动启用包:
1 2 3 4 5 6
/ /配置/ bundles.php/ /在老年Symfon欧宝娱乐app下载地址y应用,使在app / AppKernel.php包返回(/ /……学说\包\ MigrationsBundle \ DoctrineMigrationsBundle::类= > [“所有”= >真正的]];
1 2 3 4 5 6
/ /配置/ bundles.php/ /在老年Symfon欧宝娱乐app下载地址y应用,使在app / AppKernel.php包返回(/ /……学说\包\ MigrationsBundle \ DoctrineMigrationsBundle::类= > [“所有”= >真正的]];
首先得到的状态迁移应用程序中运行状态
命令:
1
美元php bin /控制台学说:迁移:状态
这个命令将显示您通用的信息迁移状态,如多少迁移已经执行,仍然需要运行,数据库在使用。
现在,您可以开始使用迁移通过生成一个新的空白迁移类。之后,您将了解如何原则可以为你自动生成迁移。
1
美元php bin /控制台学说:迁移:生成
看一看新生成的迁移类,您将看到类似如下:
1 2 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():字符串{返回”;}公共函数向上(模式美元模式):无效{/ /这个()迁移是自动生成的,请修改它来满足您的需求}公共函数下来(模式美元模式):无效{/ /在这里()迁移是自动生成的,请修改它来满足您的需求}}
如果你运行这个状态
命令它现在将显示你有一个新的迁移执行:
1
美元php bin /控制台学说:迁移:地位——show-versions
现在你可以添加一些移植代码()
和下()
方法和最后迁移当你准备好:
1
美元php bin /控制台学说:迁移:迁移“DoctrineMigrations \ Version20180605025653”
有关如何写的更多信息迁移本身(即如何填写()
和下()
方法),请参阅官方教义迁移欧宝体育电话。
1 2 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;使用欧宝娱乐app下载地址\组件\DependencyInjection\ContainerAwareInterface;使用欧宝娱乐app下载地址\组件\DependencyInjection\ContainerInterface;类MigrationFactoryDecorator实现了MigrationFactory{私人美元migrationFactory;私人美元容器;公共函数__construct(MigrationFactory美元migrationFactory,ContainerInterface美元容器){美元这- >migrationFactory =美元migrationFactory;美元这- >容器=美元容器;}公共函数createVersion(字符串美元migrationClassName):AbstractMigration{美元实例=美元这- >migrationFactory- >createVersion (美元migrationClassName);如果(美元实例运算符ContainerAwareInterface) {美元实例- >setContainer (美元这- >容器);}返回美元实例;}}
提示
如果你的迁移类实现的接口欧宝娱乐app下载地址Symfony \ \ DependencyInjection \ ContainerAwareInterface组件
这个包会自动注入默认symfony容器迁移类(这是因为欧宝娱乐app下载地址MigrationFactoryDecorator
在这个例子中是默认显示迁移工厂使用这个包)。
教义/迁移依赖于一个正确配置数据库服务器版本连接字符串来管理表中存储迁移,也称为元数据存储。
如果你遇到错误元数据存储不是最新的,请运行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