Doctrine Migrations с собственным подключением к базе данных вместо использования файла migrations-db.php

Я пытался использовать свой собственный Учение \ DBAL \ Connection объект с Doctrine Migrations, это то, что я до сих пор получил, но он постоянно говорит мне, чтобы предоставить —DB-конфигурации файл, который не то, что я хочу.

// CLI script for Doctrine Migrations
$app = require 'bootstrap.php';

$cli = new Symfony\Component\Console\Application('Doctrine CLI');

$cli->addCommands([
new \Doctrine\DBAL\Migrations\Tools\Console\Command\DiffCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\ExecuteCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\GenerateCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\MigrateCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\StatusCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\VersionCommand()
]);

$helperSet = new Symfony\Component\Console\Helper\HelperSet([
// Doctrine\DBAL\Connection $app->getContainer()->db
'connection' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($app->getContainer()->db),
'dialog' => new \Symfony\Component\Console\Helper\QuestionHelper(),
]);

$cli->setHelperSet($helperSet);

$cli->run();

Исключение:

[InvalidArgumentException]
You have to specify a --db-configuration file or pass a Database Connection as a dependency to the Migrat
ions.

2

Решение

$cli->setHelperSet($helperSet);

должен прийти раньше

$cli->addCommands([
new \Doctrine\DBAL\Migrations\Tools\Console\Command\DiffCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\ExecuteCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\GenerateCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\MigrateCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\StatusCommand(),
new \Doctrine\DBAL\Migrations\Tools\Console\Command\VersionCommand()
]);

так что helperSet передается каждой из команд.

Источник: я тоже боролся с этим и копался в коде, чтобы посмотреть, как он работает, пока не осознал свою ошибку (которая была такой же, как ваша, и возможных будущих посетителей этого вопроса).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]