Могу ли я использовать две разные среды в миграции Phinx? - PullRequest
0 голосов
/ 11 октября 2019

Я использую phinx для управления своими базами данных, и мне нужно собрать данные из базы данных и вставить их в другую.

Я определил две среды в файле конфигурации следующим образом:

'environments' => [
        'default_database' => 'current',
        'current' => [
            'adapter' => 'mysql',
            'host' => '127.0.0.1',
            'name' => 'old',
            'user' => 'root',
            'pass' => '*****',
            'port' => '3306',
            'charset' => 'utf8',
        ],
        'new' => [
          'adapter' => 'mysql',
          'host' => '127.0.0.1',
          'name' => 'new',
          'user' => 'root',
          'pass' => '*****',
          'port' => '3306',
          'charset' => 'utf8',
        ]
    ],

Что я пытаюсь достичь, это что-то вроде этого:

public function up () {

    // The environment is 'current' by default
    $data = $this->fetchAll("SELECT * FROM old_table WHERE x");

    // Change environment somehow
    $this->environment('new')

    $this->table('new_table')->insert($data);
}

Возможно ли это? Я ничего не могу найти в официальной документации .

1 Ответ

0 голосов
/ 11 октября 2019

Глядя в код phinx, они делают это, когда выполняют миграцию

    public function executeMigration(MigrationInterface $migration, $direction = MigrationInterface::UP, $fake = false)
{
    $direction = ($direction === MigrationInterface::UP) ? MigrationInterface::UP : MigrationInterface::DOWN;
    $migration->setMigratingUp($direction === MigrationInterface::UP);

    $startTime = time();
    $migration->setAdapter($this->getAdapter());

у вас есть setAdaptor, доступный в миграции, так что вы можете использовать это. Я бы предпочел написать это в комментарии, так как это не совсем ответ, но у меня не было достаточно символов

...