Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.07.2018 16:32:58

Переключение подключений к БД на лету

Приветствую! Имеется изменяемая на стороне информация с подключениями (разные сервера, пароли и прочее), пытаюсь изменить подключение в config

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

Меняю конфиг

public function config($dbname, $dbpass, $dbhost, $username){
        $config = Config::get('database.connections.mysql');
        $config['database'] = $dbname;
        $config['password'] = $dbpass;
        $config['host'] = $dbhost;
        $config['username'] = $username;
        Config::set('database.connections.mysql', $config);
}

Но запрос к DB::select("запрос"); после переподключения все равно обращается к старым параметрам, а нужно к новым.При этом возврат Config::get('database.connections.mysql') после переподключения дает нужные значения.

Не в сети

#2 20.07.2018 10:25:38

Re: Переключение подключений к БД на лету

На сколько можно понять из кода, тут вовсе нет никакого переподключения соединения. Вы просто поменяли конфиг без повторной инициализации соединения к бд.

Не в сети

#3 20.07.2018 14:53:58

Re: Переключение подключений к БД на лету

Отлично! Спасибо! Констатация факта очень помогла.
Конфиг так понимаю загружается один раз перед стартом, неужели такая стандартная задача не учтена при создании фреймворка? Нет возможности создать конфигурацию заранее для изменяющихся данных... Повторная инициализация это уже какой-то костыль получается.

Не в сети

#4 25.07.2018 00:19:52

Re: Переключение подключений к БД на лету

Конфиг кешируется. А чем вас решение c .env не устроило? Прописываете несколько подключений и при запросах указываете имя подключения. И с точки безопасности в коде даже если это в рантайме хардкодить доступы любого характера очень скверная привычка.
Если вы используете тот же гит, в комите доступы лежат.

Не в сети

Подвал раздела