Как я могу получить имя базы данных в Phinx? - PullRequest
1 голос
/ 17 февраля 2020

Я использую 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']);

, основанную на вендоре \ robmorgan \ phinx \ src \ Phinx \ Console \ Command \ Migrate. php

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

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

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете получить доступ к параметрам конфигурации среды , как $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'); 
    }
}
...