arfaram / ezdatabasemigrationschema
此捆绑包允许您通过扩展v2.5中引入的 doctrine-dbal-schema 捆绑包来导入、导出和删除数据库表
Requires
- php: ^7.1
- ezsystems/ezpublish-kernel: ^7.5
This package is auto-updated.
Last update: 2024-09-29 05:29:36 UTC
README
此捆绑包包含几个命令,用于在站点开发期间或之后使用架构文件导出、导入和删除数据库表。它还允许您向您的表中添加数据
基本上,您可以使用 DoctrineMigrationsBundle
或 KaliopMigrationBundle
来实现数据库迁移,但此捆绑包使用 doctrine-dbal-schema
捆绑包(仅在 eZ Platform 安装期间使用)并随 ezplatform v2.5 一起提供。它使用相同的概念和类来使用 mysql
或 postgresql
数据库迁移自定义架构。
要求
eZPlatform 2.5+(开源或EE)、PHP 7+
安装
composer require arfaram/ezdatabasemigrationschema:^0.1
- 在 AppKernel.php 中激活捆绑包
public function registerBundles()
{
$bundles = array(
new EzPlatform\DatabaseSchemaMigrationBundle\EzPlatformDatabaseSchemaMigrationBundle(),
);
命令
导出架构
php bin/console db_schema_migration:schema:export
参数
-t, --table[=TABLE]
: 要导出的表名。它将创建一个使用相同表名和当前时间戳的导出文件,例如ezcobj_state_1572446173.yaml
all
: (默认)如果您没有明确指定表名,则将导出整个数据库架构到db_schema_<timestamp>>.yaml
注意:您可以在 parameters.yml
中指定导出文件夹路径,否则它将在您的安装根文件夹中创建转储文件
示例
parameters:
database_schema_migration.export.schema.folder.path: '%kernel.root_dir%/../var/schemaexport/'
注意:使用 eZPlatform Cloud 时,您应该在 .platform.app.yaml
中挂载导出路径文件夹
导入架构
php bin/console db_schema_migration:schema:import
此命令导入自定义架构定义,您必须在 parameters.yml
中添加架构文件路径
示例
parameters:
database_schema_migration.schema.file.path: '%kernel.root_dir%/../<Schema-file-path>'
您可以在 bundle/doc/schema.yml
中找到架构示例或遗留的 ezplatform schema.yaml
导入数据
有时您可能还想将数据导入现有的数据库表中。这也可以使用以下命令实现
php bin/console db_schema_migration:data:import
您必须在 parameters.yml
中添加您的 sql 文件路径
示例
parameters:
database_schema_migration.import.data.file.path: '%kernel.root_dir%/../<mysql-or-postgresql-file-path>'
您可以在 bundle/doc/mysql/data.sql
中找到 sql 文件示例,或检查更多 ezplatform mysql 或 postgresql 清洁数据安装示例。
使用架构文件删除表
php bin/console db_schema_migration:schema:drop
此命令使用现有的架构文件删除表。您必须在 parameters.yml
中添加文件路径
示例
parameters:
database_schema_migration.schema.file.path: '%kernel.root_dir%/../<Schema-file-path>'
使用表名删除表
php bin/console db_schema_migration:table:drop <Table-Name>
此命令使用 doctrine 架构管理器来删除数据库表。
工作原理
SchemaBuilder
Installer.php
类扩展了 CoreInstaller
(仅在 eZ Platform 安装期间使用),但其构造函数变为自定义 SchemaBuilder
。它具有与在 doctrine-dbal-schema
捆绑包中引入的 EzSystems\DoctrineSchema\Builder\SchemaBuilder
相同的结构。
事件订阅者类 BuildSchemaSubscriber
将使用在 SchemaBuilder
中定义的 importSchemaFromFile()
方法加载架构。
您还可以添加一个包含您自定义架构的自定义订阅者。请参阅 services.yml
中的示例。
请注意使用 SchemaBuilderEvents::INSTALLER_BUILD_SCHEMA
事件名称来在执行期间分配您的订阅者。
ImportData
DbDataInstaller
扩展了来自 PlatformInstallerBundle
的 DbBasedInstaller
,并由 CoreInstaller.php
(仅在 eZ Platform 安装期间使用)使用。
此类有其自己的构造函数和importData()
方法,用于执行您的自定义查询。