Множественная настройка базы данных нескольких арендаторов

Мы создаем веб-сайт с несколькими арендаторами, используя Yii2. Мы хотим, чтобы каждый пользователь имел свою собственную базу данных при использовании одной и той же системы. Мы также будем иметь системную базу данных, которая содержит информацию и информацию о пользователях, такую ​​как выставление счетов.

Вот некоторые из наших вопросов.

  1. Как сделать второе динамическое соединение с базой данных (db2) на основе информации, хранящейся в первом соединении с базой данных (db)?
  2. Как настроить миграцию для всех баз данных арендаторов (db2), когда они являются динамическими?
  3. Как мы будем ориентировать одну динамическую базу данных на первоначальную миграцию?

Есть несколько ссылок, которые помогли, но не ответили на все наши вопросы.

Несколько соединений с базой данных и Yii 2.0

http://www.yiiframework.com/doc-2.0/guide-db-migrations.html

1) Все зависит от того, как вы его настроили. Как вы помните, какой пользователь должен использовать какую-либо БД? Вы всегда можете сделать что-то вроде

'components' => [ 'db1' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=db1name', //maybe other dbms such as psql,... 'username' => 'db1username', 'password' => 'db1password', ], 'db2' => function() use ($whatever, $variables, $you, $need) { return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=' . GETTHEDATABASEINAWAY, 'username' => GETTHEUSERINAWAY, 'password' => GETTHEPASSINAWAY, ], } ], ]; 

Подробнее об анонимных функциях http://php.net/manual/en/functions.anonymous.php

2) Вероятно, у вас есть список баз данных. Создайте свой собственный контроллер миграции, который расширяет основной, и вы можете вызвать его для миграции вместо обычного контроллера yii 2. в консоли вы можете создать migrationController.php, который расширяет Yii2, вместо вызова php yii migrate/up вы вызовете php yii migration/up .

Вы также можете обмануть систему, чтобы использовать свой собственный MigrateControllor, чтобы вы все еще могли использовать php yii migrate/up , попробуйте использовать правила URL для этого. Я видел, как парень делает это по-другому, но я не могу найти место.

3) если вы создаете свой собственный контроллер миграции (см. Номер 2), просто добавьте параметры в команду миграции. Прямо сейчас он может получать такие параметры, как --migration-path и --db , добавлять свой собственный параметр, чтобы делать то, что вам нужно.