Я довольно новичок в использовании Laravel Framework. У меня есть следующее требование. У меня есть домен — 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 и т. Д.