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

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

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

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

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

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

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

0

Решение

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 Добавьте свой собственный параметр, чтобы делать то, что вам нужно.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]