在多租户Laravel应用程序中,每个租户都有自己的数据库连接。因此,在用户选择了他的数据库之后,我想使用Auth::loginUsingId
对用户进行身份验证。尽管如此,无论我做什么,我都无法将用户模型的连接更改为另一个默认连接。
如果我在模型中设置连接,它确实会连接到特定的数据库,但我希望这是动态完成的。
有没有一种方法可以动态指定Laravel的auth应该用于身份验证的连接?
您可以在config/database.php
文件中定义另一个连接,如下所示:
return array(
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'second_db_connection' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
)
并将用户模型更改为这样:
class User extends Model {
protected $connection = 'second_db_connection';
}
在验证用户之前,仅使用Conifg::set 临时更改当前请求的数据库连接
$db = "database_name";
Config::set("database.connections.mysql.database", $db);