arfaram/ezdatabasemigrationschema

此捆绑包允许您通过扩展v2.5中引入的 doctrine-dbal-schema 捆绑包来导入、导出和删除数据库表

v0.1 2019-10-30 21:08 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:36 UTC


README

此捆绑包包含几个命令,用于在站点开发期间或之后使用架构文件导出、导入和删除数据库表。它还允许您向您的表中添加数据

基本上,您可以使用 DoctrineMigrationsBundleKaliopMigrationBundle 来实现数据库迁移,但此捆绑包使用 doctrine-dbal-schema 捆绑包(仅在 eZ Platform 安装期间使用)并随 ezplatform v2.5 一起提供。它使用相同的概念和类来使用 mysqlpostgresql 数据库迁移自定义架构。

要求

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 mysqlpostgresql 清洁数据安装示例。

使用架构文件删除表

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 扩展了来自 PlatformInstallerBundleDbBasedInstaller,并由 CoreInstaller.php(仅在 eZ Platform 安装期间使用)使用。

此类有其自己的构造函数和importData()方法,用于执行您的自定义查询。