Изменение времени подключения базы данных laravel

Я хочу изменить соединение базы данных laravel 5 с временем выполнения. У вас есть представление об этом. Пожалуйста, поделитесь со мной

Ну, мой немедленный ответ на это: не надо. Скорее всего, вы можете выполнить свою задачу, изменив свою модель данных и работая с более развитыми отношениями. Трудно сказать, не зная, что вы хотите сделать, но мне кажется, что это плохая идея в целом, особенно если вы планируете использовать красноречивые модели и так далее

Тем не менее, в каком-то сценарии, где вам действительно нужно изменить данные в другой базе данных или выполнить какой-то необработанный запрос, вы можете использовать метод DB::connection() . Что-то вроде:

 $data = DB::connection('another_connection')->select(...); 

Вы можете указать эту переменную another_connection в файле database.php . Как это:

 <?php return array( 'default' => 'mysql', 'connections' => array( # Your regular connection 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'user', 'password' => 'password' 'charset' => 'utf8', ), # Your new connection 'another_connection' => array( 'driver' => 'mysql', 'host' => 'another_host', 'database' => 'another_db', 'username' => 'user1', 'password' => 'password1' 'charset' => 'utf8', ), ), ); 

Вы можете даже указать соединение для каждой красноречивой модели, используя protected $connection = 'another_connection'; также вы можете указать соединение для каждого экземпляра модели, созданного / запрошенного во время выполнения

 $user = new User; $user->setConnection('another_connection'); $user1 = $user->find(1); 

Но опять же, я лично не думаю, что это хорошая идея, и мне кажется, что все может стать беспорядочным и развалиться очень быстро, так как ваше приложение растет по сложности.

Вы можете изменить данные о соединении во время выполнения, используя

 Config::set('database.connections.mysql.database', 'other_database'); 

но не забудьте очистить до удаления кеша

 DB::purge('mysql');