PHPackages                             oxid-esales/oxideshop-doctrine-migration-wrapper - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. oxid-esales/oxideshop-doctrine-migration-wrapper

ActiveLibrary

oxid-esales/oxideshop-doctrine-migration-wrapper
================================================

OXID eShop database migrations using Doctrine

v5.4.0(1y ago)41.2M↓22.5%79proprietaryPHPPHP &gt;=8.2CI passing

Since Dec 2Pushed 1mo ago13 watchersCompare

[ Source](https://github.com/OXID-eSales/oxideshop-doctrine-migration-wrapper)[ Packagist](https://packagist.org/packages/oxid-esales/oxideshop-doctrine-migration-wrapper)[ RSS](/packages/oxid-esales-oxideshop-doctrine-migration-wrapper/feed)WikiDiscussions b-8.0.x Synced 1mo ago

READMEChangelog (2)Dependencies (9)Versions (48)Used By (9)

OXID eShop doctrine migration integration
=========================================

[](#oxid-eshop-doctrine-migration-integration)

Documentation: [https://docs.oxid-esales.com/developer/en/latest/development/modules\_components\_themes/module/database\_migration/index.html](https://docs.oxid-esales.com/developer/en/latest/development/modules_components_themes/module/database_migration/index.html)

Description
-----------

[](#description)

OXID eShop uses database migrations for:

- eShop editions migration (CE, PE and EE)
- Project specific migrations
- Modules migrations

At the moment OXID eShop uses "Doctrine 2 Migrations" and it's integrated via OXID eShop migration components.

Doctrine Migrations runs migrations with a single configuration. But there was a need to run migration for one or all the projects and modules (CE, PE, EE, PR and a specific module). For this reason `Doctrine Migration Wrapper` was created.

Running migrations - CLI
------------------------

[](#running-migrations---cli)

Script to run migrations is installed within composer bin directory. It accepts two parameters:

- Doctrine Command
- Suite Type (CE, PE, EE, PR or a specific module\_id)

```
vendor/bin/oe-eshop-db_migrate
```

To get comprehensive information about Doctrine 2 Migrations and available commands, please see the [official documentation](https://www.doctrine-project.org/projects/doctrine-migrations/en/2.2/index.html).

Example:

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

This command will run all the migrations which are in OXID eShop specific directories. For example if you have OXID eShop Enterprise edition, migration tool will run migrations in this order:

- Community Edition migrations (executed always)
- Professional Edition migrations (executed when eShop has PE or EE)
- Enterprise Edition migrations (executed when eShop has EE)
- Project specific migrations (executed always)
- Module migrations (executed when eShop has at least one module with migration)

### Suite Types (Generate migration for a single suite)

[](#suite-types-generate-migration-for-a-single-suite)

It is also possible to run migrations for specific suite by defining `` parameter in the command. This variable defines what type of migration it is. There are 5 suite types:

- **PR** - For project specific migrations. It should be always used for project development.
- **CE** - Generates migration file for OXID eShop Community Edition. It's used for product development only.
- **PE** - Generates migration file for OXID eShop Professional Edition. It's used for product development only.
- **EE** - Generates migration file for OXID eShop Enterprise Edition. It's used for product development only.
- **&lt;module\_id&gt;** - Generates migration file for OXID eShop specific module. It's used for module development only.

Example 1:

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

This command generates migration versions for all the suite types.

Example 2:

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

In this case it will be generated only for Enterprise Edition in `vendor/oxid-esales/oxideshop_ee/migration` directory.

### Use Migrations Wrapper without CLI

[](#use-migrations-wrapper-without-cli)

Doctrine Migration Wrapper is written in PHP and also could be used without command line interface. To do so:

- Create `Migrations` object with `MigrationsBuilder->build()`
- Call `execute` method with needed parameters

Installation
------------

[](#installation)

### Development installation

[](#development-installation)

> **Note:** The following commands have to be executed in the php-container of your already installed eshop.

Register and update the migration wrapper repository with your branch in the composer.json of the eshop:

```
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
```

Setup ce-shop for wrapper:

```
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 ..
```

Adjust cloned shop component requirements to fit our wrapper version and install wrapper development dependencies with `--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
```

Adjust MySQL credentials in the tests specific `config.inc.php` to use an **empty or non existing** database. The `config.inc.php` could look like this:

```
