1

在多租户 Laravel 应用程序中,每个租户都有自己的数据库连接。因此,在用户选择了他的数据库后,我想使用Auth::loginUsingId. 尽管如此,无论我做什么,我都无法将用户模型的连接更改为另一个默认值。

如果我在模型中设置连接,它会连接到特定的数据库,但我希望这是动态完成的。

有没有办法动态指定 Laravel 的身份验证应该用于身份验证的连接?

4

2 回答 2

1

您可以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';
    
}
于 2021-06-29T10:50:16.617 回答
0

在对用户进行身份验证之前,仅使用 Conifg::set 临时更改当前请求的数据库连接

$db = "database_name";
Config::set("database.connections.mysql.database", $db);
于 2021-06-29T11:06:03.877 回答