Laravel修改数据库连接

12 浏览
0 Comments

Laravel修改数据库连接

这个问题已经有了答案

如何在Laravel中使用多个数据库

Laravel 动态更改连接

当用户是管理员角色时,如何更改数据库连接?管理员数据库包含不能让其他用户访问的信息,而且要求数据库必须位于自己的服务器上。我目前有一个单独的管理员连接配置。

'mysql' => [
    'host'      => 'admin.psa44.localhost'
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => 'secretpassword',
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
],

我希望应用程序中没有硬编码,那么如何在必要时进行Laravel切换?感谢任何帮助。

admin 更改状态以发布 2023年5月24日
0
0 Comments

您需要在应用配置中创建新的数据库配置规则。

'mysql' => [
    'host'      => 'admin.psa44.localhost'
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => 'secretpassword',
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
],
'mysql_admin' => [
    'host'      => 'admin.psa44.localhost'
    'driver'    => 'mysql',
    'database'  => 'admindatabase',
    'username'  => 'root',
    'password'  => 'secretpassword1',
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
],

我将其命名为mysql_admin。迁移时,使用

Schema::create('some_table', function($table)

创建表,使用

Schema::connection('mysql_admin')->create('some_table', function($table)

在其他数据库中创建该表。

要对该数据库进行查询,请执行以下操作

$admins = DB::connection('mysql_admin')->select(...);

您可以为模型定义连接

class AdminModel extends Eloquent {
    protected $connection = 'mysql_admin';
}

0