使用Laravel Auth时更改数据库连接



在多租户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);

相关内容

  • 没有找到相关文章

最新更新