Laravel 7 - Как я могу изменить базу данных при входе в систему? - PullRequest
0 голосов
/ 16 июня 2020

В моем проекте laravel 7 несколько баз данных. У меня есть «главная» база данных, в которой я связываю пользователя с другой вторичной базой данных. Таким образом, основная база данных всегда одна и та же, но база данных-получатель различается в зависимости от пользователей. Как выбрать базу данных при входе пользователя в систему?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Вы можете использовать следующий способ изменения базы данных.

config()->set('database.default', 'user-1-db');

PS: Приведенное выше изменит соединение с базой данных только для одного запроса. Таким образом, чтобы добиться этого в соответствии с требованиями пользователя, вы можете сделать это, создав промежуточное программное обеспечение. Узнайте о промежуточном программном обеспечении здесь .

0 голосов
/ 16 июня 2020

Вы можете определить несколько подключений к базе данных на config/database.php

И когда пользователь входит в систему, измените значение конфигурации этой переменной в соответствии с информацией о пользователе.

Допустим, вы добавили новое соединение с базой данных называется tenant_db, а целевое имя базы данных пользователя - «tenant_user_db_1», имя пользователя - «tenant_user_1», пароль - «tenant_user_1_password»

Затем вы можете изменить подключение к базе данных, используя это

$connection = "tenant_db";
$dbname = "tenant_user_db_1";
$username = "tenant_user_1";
$password = "tenant_user_1_password";

config(['database.connections.'.$connection.'.database' => $database]);

config(['database.connections.'.$connection.'.username' => $username]);

config(['database.connections.'.$connection.'.password' => $password]);

DB::reconnect($connection);
...