Laravel 5.5如何根据请求更改DB_HOST

时间:2017-11-10 03:22:53

标签: php laravel laravel-5 laravel-5.5

好的,我的系统连接到远程数据库,根据我想要访问的数据,我一直在这些数据库上进行更改。

设置是多个相同的结构数据库驻留在不同的IP地址上,所以每次我想访问不同的数据库时,我总是更新.env DB_HOST行。

现在我打算在我的系统上创建一个视图,该视图将接受一个I​​P地址并将其设置为当前要使用的数据库。

1 个答案:

答案 0 :(得分:1)

引用this answer on Laracasts

在配置中设置两个数据库连接(一个用于不间断的主连接,另一个用于自定义动态连接):

'main' => array(
    'driver'   => 'mysql',
    'host'     => 'hostname',
    'database' => 'database',
    'username' => 'username',
    'password' => 'password',
    'prefix'   => '',
),

'dynamic' => array(
    'driver'   => 'mysql',
    'host'     => '',
    'database' => '',
    'username' => '',
    'password' => '',
    'prefix'   => '',
),

然后根据需要更改第二个连接的数据库连接参数:

Config::set('database.connections.dynamic.host', $newHost);
Config::set('database.connections.dynamic.username', $newUsername);
Config::set('database.connections.dynamic.password', $newPassword);
Config::set('database.connections.dynamic.database', $newDatabase);
Config::set('database.default', 'dynamic');

重新连接数据库:

DB::reconnect('mysql');