oxid-esales / oxideshop-doctrine-migration-wrapper
使用 Doctrine 进行 OXID eShop 数据库迁移
Requires
- php: >=8.0
- doctrine/migrations: ^3.0
- oxid-esales/oxideshop-facts: *
- symfony/console: *
Requires (Dev)
- ext-pdo: *
- mikey179/vfsstream: ^1.6
- oxid-esales/oxideshop-ce: ^7.1.0
- phpspec/prophecy-phpunit: ^v2.0
- phpunit/phpunit: ^10.4
- symfony/filesystem: *
- symfony/yaml: *
- dev-b-8.0.x
- v5.2.0
- v5.1.0
- v5.0.0
- v4.0.0
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.1
- v3.1.0
- v3.0.0
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.0
- v2.0.0-beta.7
- v2.0.0-beta.6
- v2.0.0-beta.5
- v2.0.0-beta.4
- v2.0.0-beta.3
- v2.0.0-beta.2
- v2.0.0-beta.1
- v2.0.0-alpha.3
- v2.0.0-alpha.2
- v2.0.0-alpha.1
- v1.0.0
- dev-b-7.2.x
- dev-b-8.0.x-no-config-inc-OXDEV-7248
- dev-b-7.1.x
- dev-b-7.0.x
- dev-b-7.0.x-github-action-refac-OXDEV-6832
- dev-b-6.5.x
- dev-b-7.0-enable_flags-OXDEV-4222
- dev-b-6.4.x
- dev-b-6.4.x-development_setup_to_readme
- dev-b-6.3.x
- dev-b-2.x
- dev-b-3.x
- dev-b-1.x
This package is auto-updated.
Last update: 2024-08-25 14:12:41 UTC
README
描述
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。