3
votes

I'm using Symfony 5.1.5

I've configured multiple entity managers. Here's my doctrine.yaml file:

doctrine:
    dbal:
        default_connection: master
        connections:
            master:
                url: '%env(resolve:MASTER_DATABASE_URL)%'
            client:
                url: '~'

    orm:
        default_entity_manager: master
        auto_generate_proxy_classes: true
        entity_managers:
            master:
                naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
                connection: master
                mappings:
                    App\Master:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/Master'
                        prefix: 'App\Entity\Master'
                        alias: Master
            client: 
                naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
                connection: client
                mappings:
                    App\Client:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/Client'
                        prefix: 'App\Entity\Client'
                        alias: Client

Here's my doctrine_migrations.yaml file:

doctrine_migrations:
    em: 'master'
    migrations_paths:
        'DoctrineMigrations': '%kernel.project_dir%/migrations'

I have two entities
App\Entity\Master\Subdomain
App\Entity\Client\User

When I run symfony console make:migration it only works with Master entity manager.

Looking at https://symfony.com/doc/current/doctrine/multiple_entity_managers.html they use these commands as examples

 php bin/console doctrine:migrations:diff --em=customer
 php bin/console doctrine:migrations:migrate --em=customer

However when I try to run php bin/console doctrine:migrations:diff --em=customer I get an error saying "The "--em" option does not exist."

How can I make it generate migrations for the Client entity manager as well?

2

2 Answers

2
votes

Option --em was remove in "doctrine/migrations": "^3.0" buit it will be added back in "^3.1".

You can use it right now by requiring the lib with dev stability level composer require doctrine/migrations:^3.1@dev

After that can define a custom config file for each connection

  • config/migrations/master.yaml
  • config/migrations/client.yaml

the config file should look like:

migrations_paths:
    'master': '../../src/Migrations/Master'
em: master

You can run the command like:

php bin/console doctrine:migrations:diff --configuration=config/migrations/client.yaml

php bin/console doctrine:migrations:migrate --configuration=config/migrations/client.yaml
0
votes

Option --em definitely exists. You must define a custom config file for each connection in config/migrations/master.yaml and config/migrations/client.yaml

And then run:

php bin/console doctrine:migrations:diff --em=master --configuration=config/migrations/master.yaml

and

php bin/console doctrine:migrations:diff --em=client --configuration=config/migrations/client.yaml

The content of config files is (config/migrations/master.yaml):

name: MASTER DATABASE - Doctrine Migrations
migrations_namespace: DoctrineMigrations
table_name: migration_versions
migrations_directory: '../../src/Migrations/Master'