Мы создаем мультитенантный веб-сайт с использованием Yii2. Мы хотим, чтобы каждый пользователь имел собственную базу данных при использовании одной и той же системы. У нас также будет системная база данных, которая содержит информацию о пользователях и информацию, такую как выставление счетов.
Вот некоторые из наших вопросов.
Есть несколько ссылок, которые помогли, но не ответили на все наши вопросы.
Несколько подключений к базе данных и 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.
в консоли вы можете создать файл миграцию ControlController.php, который расширяет Yii2 вместо вызова php yii migrate/up
ты позвонишь php yii migration/up
,
Вы также можете обмануть систему, чтобы использовать свой собственный MigrateControllor, чтобы вы все еще могли использовать php yii migrate/up
попробуйте использовать правила URL для этого. Я видел, как парень делал это по-другому, но я не могу найти место.
3) если вы создаете свой собственный контроллер миграции (см. Пункт 2), просто добавьте параметры в команду миграции. Прямо сейчас он может получать такие параметры, как --migration-path
а также --db
Добавьте свой собственный параметр, чтобы делать то, что вам нужно.
Других решений пока нет …