Можно ли использовать метод Session :: get () в файле database.php? - PullRequest
0 голосов
/ 01 мая 2019

Я Абдулла.Я хочу использовать несколько соединений с базой данных в Laravel 5.6.Но я хочу изменить базу данных динамически.лучший способ для меня, используя метод Session :: get () в config / database.php.

'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 голосов
/ 02 мая 2019

Я не думаю, что это возможно, потому что когда вы изменяете любую конфигурацию в своем конфигурационном файле и используете php artisan для обслуживания вашего приложения.Вы должны остановить работающую подачу и перезапустить ее, чтобы Laravel принял во внимание новую конфигурацию.Laravel не выполняет горячую перезагрузку конфигурации.

Мой совет - определить множество connection внутри файла database.php так, как вам нужно, и когда вы хотите переключиться на другое соединение, вы можете указать его, указав имя данного соединения, например

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

Вы можете переключать соединение, если вам нужно, внутри контроллера или где-то еще

Если вы хотите изменить соединение на конкретной модели, вы можете выполнить это следующим образом

$user = new user();
$user->setConnection('connection_name');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...