是否可以在Database.php文件中使用session :: get()方法



我是阿卜杜拉(Abdullah(。我想在Laravel 5.6中使用多个数据库连接。但是我想动态更改数据库。对我来说,使用config/database.php中的使用session :: get((方法的最佳方法。

'连接'=> [

    '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'(方法更改可更改的数据库。是可能的还是其他方式?

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

我的建议是根据需要定义database.php文件中的许多connection,当您转换为另一个连接时,可以通过提供给定连接的名称(如This this

(来指定它。
$users = DB::connection('connection_name')
    ->table('users')
    ->where('name', 'John')->first();

您可以切换连接您需要内部控制器或其他地方

如果要更改特定模型的连接,则可以这样执行

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

最新更新