在多租户 Laravel 应用程序中,每个租户都有自己的数据库连接。因此,在用户选择了他的数据库后,我想使用Auth::loginUsingId
. 尽管如此,无论我做什么,我都无法将用户模型的连接更改为另一个默认值。
如果我在模型中设置连接,它会连接到特定的数据库,但我希望这是动态完成的。
有没有办法动态指定 Laravel 的身份验证应该用于身份验证的连接?
在多租户 Laravel 应用程序中,每个租户都有自己的数据库连接。因此,在用户选择了他的数据库后,我想使用Auth::loginUsingId
. 尽管如此,无论我做什么,我都无法将用户模型的连接更改为另一个默认值。
如果我在模型中设置连接,它会连接到特定的数据库,但我希望这是动态完成的。
有没有办法动态指定 Laravel 的身份验证应该用于身份验证的连接?
您可以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' => '',
),
)
并将 User 模型更改为:
class User extends Model {
protected $connection = 'second_db_connection';
}
在对用户进行身份验证之前,仅使用 Conifg::set 临时更改当前请求的数据库连接
$db = "database_name";
Config::set("database.connections.mysql.database", $db);