Вот как я это сделал! Мне пришлось создать промежуточное программное обеспечение и добавить это промежуточное программное обеспечение в группу промежуточного программного обеспечения маршрута.
class ChangeDatabase
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
$database_name = Auth::user()->database;
$user_id = Auth::user()->id;
Config::set('database.connections.tenant', array(
'driver' => 'mysql',
'host' => '',
'database' => $database_name,
'username' => 'forge',
'password' => '',
'port' => '3306',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
));
Config::set('database.default', 'tenant');
$user = User::where('id', $user_id)->first();
Auth::guard()->login($user);
}
return $next($request);
}
}
Затем я должен был создать черту и использовать ее во всех моделях.
trait DatabaseChangerTrait {
public function __construct(){
if (Auth::check()) {
$database_name = Auth::user()->database;
$user_id = Auth::user()->id;
Config::set('database.connections.tenant', array(
'driver' => 'mysql',
'host' => '',
'database' => $database_name,
'username' => 'forge',
'password' => '',
'port' => '3306',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
));
Config::set('database.default', 'tenant');
$user = User::where('id', $user_id)->first();
Auth::guard()->login($user);
}
}
}