Doctrine Migrations do not work in Mezzio

What am I doing wrong? used roave/psr-container-doctrine

config/cli-config.php

$container = require __DIR__ . '/container.php';
$entityManager = $container->get(\Doctrine\ORM\EntityManager::class);
$migrationsConfiguration = $container->get('config')['doctrine']['migrations'];
$configuration = new \Doctrine\Migrations\Configuration\Configuration($entityManager->getConnection());
$configuration->setMigrationsDirectory($migrationsConfiguration['directory']);
$configuration->setName($migrationsConfiguration['name']);
$configuration->setMigrationsNamespace($migrationsConfiguration['namespace']);
$configuration->setMigrationsTableName($migrationsConfiguration['table']);
$configuration->setMigrationsColumnName($migrationsConfiguration['column']);
$configuration->createMigrationTable();
return new \Symfony\Component\Console\Helper\HelperSet([
    'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper(
        $entityManager
    ),
    'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper(
        $entityManager->getConnection()
    ),
    'configuration' => new \Doctrine\Migrations\Tools\Console\Helper\ConfigurationHelper(
        $entityManager->getConnection(), $configuration
    )
]);

config/autoload/doctrine.local.php

return [
    'doctrine' => [
        'connection' => [
            'orm_default' => [
                'params' => [
                    'driver'   => 'pdo_mysql',
                    'host'     => '',
                    'port'     => '',
                    'dbname'   => '',
                    'user'     => '',
                    'password' => '',
                    'charset'  => 'UTF8mb4',
                    'collation'=> 'UTF8mb4_unicode_ci',
                ],
            ],
        ],
        'annotation' => [
            'metadata' => [
                'src/User/src/Entity',
            ],
        ],
        'driver' => [
            'orm_default' => [
                'class' => Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain::class,
                'drivers' => [
                    'Calculator\Entity' => 'app_entity',
                    'User\Entity' => 'app_entity',
                ],
            ],
            'app_entity' => [
                'class' => Doctrine\ORM\Mapping\Driver\AnnotationDriver::class,
                'cache' => 'array',
                'paths' => [
                    __DIR__ . '/../../src/User/src/Entity',
                ],
            ],
        ],
        'cache' => [
            'array' => [
                'class' => Doctrine\Common\Cache\ArrayCache::class,
                'namespace' => 'psr-container-doctrine',
            ],
        ],
        'migrations' => [
            'directory' => __DIR__ . '../../data/migrations',
            'name' => 'DBMigrations',
            'namespace' => 'DB\Migration',
            'table' => 'app_migrations',
            'column' => 'version_timestamp',
        ],
    ],
    'dependencies' => [
        'factories' => [
            Command\DiffCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\DumpSchemaCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\ExecuteCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\GenerateCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\LatestCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\MigrateCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\RollupCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\StatusCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\UpToDateCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
            Command\VersionCommand::class => Roave\PsrContainerDoctrine\MigrationsCommandFactory::class,
        ],
    ],
];

config/autoload/dependencies.global.php

return [
    'dependencies' => [
        'factories'  => [
            \Doctrine\ORM\EntityManager::class   => Roave\PsrContainerDoctrine\EntityManagerFactory::class,
        ],
    ],
];

php vendor/bin/doctrine list
does not contain a list of commands for working with migrations (migrate, diff …)
thank

Hey,

the docs at https://github.com/Roave/psr-container-doctrine#using-the-doctrine-cli don’t seem to be complete indeed: can you try with vendor/bin/doctrine-migrations?

1 Like

Thank you very much!!! :ok_hand:

Please send a patch if you feel like some steps could be improved :slight_smile: