Я пытаюсь изменить соединение с базой данных при входе в систему в зависимости от компании пользователя.
Здесь у моего пользователя есть компания, и его база данных companyA .
Ниже мой LoginController, где я изменил соединение:
public function authenticated(Request $request,User $user)
{
\Config::set('database.connections.dynamicdb', array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => $user->company,
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'strict' => false,
'options' => [
\PDO::ATTR_EMULATE_PREPARES => true
]
));
return redirect()->intended($this->redirectPath());
}
Таким образом, на основании user->company
, который уже определен в таблице пользователей, имя базы данных изменено.
Но почему-то это не такт работа.Отображаемая ошибка:
База данных не выбрана.
Я попробовал следующий код, чтобы проверить, установлены ли значения при входе в систему.
return \Config::get('database.connections.dynamicdb');
Этопоказал все значения, установленные для моих требований.Но когда я проверяю после входа в систему и достижения / home, значение базы данных в конфигурации равно нулю.
Так что все изменения я должен сделать.Правильна ли моя техника?Или есть какое-то другое решение для этого.
В моей модели акций я добавил следующие строки:
protected $table = 'stocks';
protected $connection = 'dynamicdb';
И запрос, который я выполняю, - это всего лишь запрос get all:
Stock::orderBy('tag_no','asc')->get()
Может кто-нибудь сказать, пожалуйста, почему это происходит?Что мне делать?