Как я могу получить имя базы данных в Phinx?

Я использую Phinx для миграции. https://github.com/cakephp/phinx

Теперь я хочу использовать имя моей базы данных в каком-то специальном запросе в файле миграции, имя базы данных указывается в зависимости от среды в файле phinx-config.

    return [
    'paths' => [
        'migrations' => './database/migrations',
        'seeds' => './database/seeds',
    ],
    'environments' => [
        'default_migration_table' => 'phinxlog',
        'default_database' => 'development',
        'development' => [
            'adapter' => 'mysql',
            'host' => ,
            'name' => ,
            'user' => ,
            'pass' => ,
            'port' => 3306,
            'charset' => 'utf8',
        ],
    ],
];

Я нашел в рамках проекта какую-то строчку

$output->writeln('<info>using database</info> ' . $envOptions['name']);

основанный на файле vendor\robmorgan\phinx\src\Phinx\Console\Command\Migrate.php

Если я запускаю команду, появляется сообщение, которое называет cli правильной базой данных. Как я могу использовать этот $envOptions в моем файле миграции?

Мне не хватает чего-то вроде getConfig().


person larabee    schedule 17.02.2020    source источник


Ответы (1)


Вы можете получить доступ к параметрам конфигурации среды, например $this->getAdapter()->getOption('<paramKey>');, внутри миграции:

<?php

use Phinx\Migration\AbstractMigration;

/**
 * Class InnoDB
 */
class SomeMigration extends AbstractMigration
{
    /**
     * Up
     */
    public function change()
    {
        //returns the field "name" from environment config
        $dbName = $this->getAdapter()->getOption('name'); 
    }
}
person lin    schedule 20.02.2020