是否可以在database.php文件中使用Session :: get()方法?

时间:2019-05-01 11:57:29

标签: php session laravel-5.6

我是阿卜杜拉。我想在laravel 5.6中使用多个数据库连接。但我想动态更改数据库。对我最好的方法是在config / database.php中使用Session :: get()方法。

'connections'=> [

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'default_db'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

    'mysql2' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => 'changeable_db',
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],

],

我想通过使用Session :: get('db')方法更改可变数据库。有可能还是其他方式?

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的,因为当您更改配置文件中的任何配置并使用php artisan为您的应用程序提供服务时。您必须停止正在运行的服务并重新启动它,以便laravel考虑新配置。 Laravel不会热重载配置。

我的建议是根据需要在connection文件中定义许多database.php,当您想切换到另一个连接时,可以通过提供给定连接的名称来指定它,例如

$users = DB::connection('connection_name')
    ->table('users')
    ->where('name', 'John')->first();

您可以在Controller内部或其他地方切换所需的连接

如果要更改特定型号上的连接,可以通过这种方式执行

$user = new user();
$user->setConnection('connection_name');