Laravel — Изменить соединение с базой данных для определенного URL?

Я довольно новичок в использовании Laravel Framework. У меня есть следующее требование. У меня есть домен — example.com, и весь его стек кода работает в laravel. Допустим, в конфигурации по умолчанию соединение с базой данных — ‘db1’

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

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

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

1

Решение

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

Поместите список разрешенных стран в конфигурационный файл (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();
}

Это должно работать, однако я не проверял это

6

Другие решения

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

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

1

По вопросам рекламы [email protected]