Вы должны поместить его в промежуточное ПО. Например:
<?php
class UserDatabaseMiddleware {
public function handle($request, \Closure $next){
$databaseName = $request->user()->db;
config(['database.connections.mysql.database' => $databaseName]);
return $next($request);
}
}
Затем вы должны определить его в App \ Http \ Kernel. php
<?php
protected $routeMiddleware = [
'dbselect' => UserDatabaseMiddleware::class
]
И, наконец, вы можете добавить его в свой файл маршрута. Например:
<?php
Route::group([
'middleware' => 'dbselect',
], function(){
Route::get('/', [MyController::class, 'myMethod'])->name('index');
})
Теперь конфигурация должна изменяться с каждым HTTP-запросом, если пользователь вошел в систему.
Важно: Как было упомянуто в комментариях - наличие нескольких баз данных на пользователя - плохой подход. Вы должны это учитывать. Есть другой способ сделать это - вы можете указать user_id для каждой записи в таблице, а затем создать глобальную область видимости для выбора только записей вошедшего в систему пользователя.