Laravel – Изменить подключение к базе данных для определенного URL-адреса?

Я довольно новичок в использовании laravel framework. У меня есть следующее требование. У меня есть domain – example.com, и весь его стек кода работает в laravel. Допустим, что в базе данных по умолчанию для конфигурации по умолчанию установлено значение – 'db1'

Теперь, если url становится – example.com/country – я хочу, чтобы соединение с базой данных по умолчанию стало – 'db2'

А также я хочу, чтобы базовый URL-адрес был изменен на example.com/country, так как все модули будут одинаковыми. Здесь будет меняться только соединение с базой данных.

Может ли кто-нибудь помочь мне здесь?

Я бы сделал это следующим образом:

Поместите список разрешенных стран в файл конфигурации ( countries.php ).

В routes.php :

 // choosing country $country = ''; if (in_array(Request::segment(1), Config::get('countries'))) { $country = Request::segment(1); } // making route for top level if ($country != '') { Route::any( '/', 'MainPage@index'); } // making routes optionally prefixed by country Route::group( array('prefix' => $country, function () { // here all routes }); 

В database.php где вы определили свое соединение, вы можете добавить другие соединения, например:

 'germany' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'germany_connection', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 

Теперь в том же файле (хотя вы, вероятно, должны перемещать его в другое место), вы можете:

 if ($country == 'germany') { DB::disconnect(); Config::set('database.default','germany'); DB::reconnect(); } 

Вы можете, конечно, добавить много условий здесь или если вы определили соединение для каждой разрешенной страны, вы можете просто сделать:

 if ($country != '' ) { DB::disconnect(); Config::set('database.default', $country); DB::reconnect(); } 

Он должен работать, однако я его не тестировал

Я сделал что-то подобное, используя среду.

Добавьте новое правило при обнаружении среды для анализа URL-адреса и изменения его в новой среде. Затем вы можете добавить каталог для новой среды, в которой вы настраиваете новую базу данных, базовый URL и т. Д.