oxid-esales/oxideshop-doctrine-migration-wrapper

使用 Doctrine 进行 OXID eShop 数据库迁移


README

https://travis-ci.org/OXID-eSales/oxideshop-doctrine-migration-wrapper.svg?branch=master

文档: https://docs.oxid-esales.com/developer/en/6.2/development/modules_components_themes/module/database_migration/index.html

描述

OXID eShop 使用数据库迁移进行

  • eShop 版本迁移(CE、PE 和 EE)
  • 项目特定迁移
  • 模块迁移

目前 OXID eShop 使用 "Doctrine 2 Migrations" 并通过 OXID eShop 迁移组件集成。

Doctrine Migrations 使用单一配置运行迁移。但是需要为单个或所有项目及模块(CE、PE、EE、PR 和特定模块)运行迁移。因此创建了 Doctrine 迁移包装器。

运行迁移 - CLI

运行迁移的脚本安装在 composer bin 目录中。它接受两个参数

  • Doctrine 命令
  • 套件类型(CE、PE、EE、PR 或特定模块_id)
vendor/bin/oe-eshop-db_migrate <Doctrine_Command> <Suite_Type>

有关 Doctrine 2 Migrations 和可用命令的详细信息,请参阅 官方文档

示例

vendor/bin/oe-eshop-db_migrate migrations:migrate

此命令将运行所有位于 OXID eShop 特定目录中的迁移。例如,如果您有 OXID eShop 企业版,迁移工具将按以下顺序运行迁移

  • 社区版迁移(始终执行)
  • 专业版迁移(当 eShop 有 PE 或 EE 时执行)
  • 企业版迁移(当 eShop 有 EE 时执行)
  • 项目特定迁移(始终执行)
  • 模块迁移(当 eShop 至少有一个具有迁移的模块时执行)

套件类型(为单个套件生成迁移)

也可以通过在命令中定义 <Suite_Type> 参数来为特定套件运行迁移。此变量定义了迁移的类型。有 5 种套件类型

  • PR - 用于项目特定迁移。它应始终用于项目开发。
  • CE - 为 OXID eShop 社区版生成迁移文件。它仅用于产品开发。
  • PE - 为 OXID eShop 专业版生成迁移文件。它仅用于产品开发。
  • EE - 为 OXID eShop 企业版生成迁移文件。它仅用于产品开发。
  • <module_id> - 为 OXID eShop 特定模块生成迁移文件。它仅用于模块开发。

示例 1

vendor/bin/oe-eshop-db_migrate migrations:generate

此命令将为所有套件类型生成迁移版本。

示例 2

vendor/bin/oe-eshop-db_migrate migrations:generate EE

在这种情况下,它将仅在 vendor/oxid-esales/oxideshop_ee/migration 目录中为企业版生成。

不使用 CLI 使用迁移包装器

Doctrine 迁移包装器是用 PHP 编写的,也可以不使用命令行界面使用。要这样做

  • 使用 MigrationsBuilder->build() 创建 Migrations 对象
  • 使用所需参数调用 execute 方法

安装

开发安装

注意

以下命令必须在已安装的 eshop 的 php-container 中执行。

在 eshop 的 composer.json 中注册并更新迁移包装器存储库的分支

composer config repositories.oxid-esales/oxideshop-doctrine-migration-wrapper git https://github.com/OXID-eSales/oxideshop-doctrine-migration-wrapper
composer require oxid-esales/oxideshop-doctrine-migration-wrapper:dev-b-6.4.x

设置 ce-shop 以使用包装器

cd vendor/oxid-esales/oxideshop-doctrine-migration-wrapper/
git clone --branch=b-6.4.x https://github.com/OXID-eSales/oxideshop_ce.git source_ce
composer config repositories.oxid-esales/oxideshop-ce path source_ce/
cd source_ce
composer require --no-update oxid-esales/oxideshop-doctrine-migration-wrapper:*
cd ..

调整克隆的商店组件要求以适应我们的包装器版本,并使用 --no-plugins 安装包装器开发依赖项

composer require --dev --no-plugins oxid-esales/oxideshop-ce:*
cp tests/testData/source/config.inc.php.dist tests/testData/source/config.inc.php

在特定的 config.inc.php 文件中调整 MySQL 凭据,以使用一个 空或不存在 的数据库。该 config.inc.php 文件可能如下所示:

<?php

/**
 * Copyright © OXID eSales AG. All rights reserved.
 * See LICENSE file for license details.
 */

// Database connection information
$this->dbType = 'pdo_mysql';
$this->dbHost = 'mysql'; // database host name
$this->dbPort = '3306'; // database port
$this->dbName = 'example2'; // database name
$this->dbUser = 'root'; // database user name
$this->dbPwd = 'root'; // database user password

现在,在 wrapper 目录下,可以运行 wrapper 的测试。

./vendor/bin/phpunit tests/

注意

如果配置正确(使用不同的数据库),测试不会破坏您当前的商店安装!

注意

如果您想在 eShop 中使用 CLI,必须重命名 vendor 文件夹。否则,CLI 将无法工作。

错误和问题

如果您遇到任何错误或问题,请在该部分的 OXID eShop(所有版本) 中进行报告:https://bugs.oxid-esales.com