2016-09-02 2 views
4

У меня есть сценарий, который я хочу реализовать в Laravel.Как настроить и запустить несколько веб-сайтов с соответствующими базами данных с одним экземпляром кода Laravel

Я уже реализовал такой подход в пользовательском PHP. Но на этот раз я хочу переместить все веб-сайты в рамки (Laravel).

У меня есть несколько доменов для различных регионов (Localization), каждый домен имеет свою собственную базу данных, а вся структура таблиц базы данных одинакова, только данные разные.

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

Пусть предположим: У меня есть несколько доменов

1. abc.com and it has database with name of db_abc with theme/template ABC 
2. xyz.com and it has database with name of db_xyz with theme/template XYZ 

Когда домен abc.com ударен/доступ, я хочу, чтобы соединиться с БД db_abc и загрузить данные в ABCtheme/template. Аналогично, когда xyz.com попадает/обращается к соединению с базой данных, должно быть сделано с db_xyz, а данные должны быть загружены в theme/templateXYZ.

Пожалуйста, помогите мне в этом.

спасибо.

+0

Аналогичный вопрос: http://stackoverflow.com/q/34309584/2815635 – C2486

ответ

1

Прежде всего, вам нужно указать все домены на один проект.

После этого вы можете catch домены с маршрутной группы:

Route::group(['domain' => 'abc.com'], function() { 
    Route::get('/', '[email protected]'); 
}); 

Чтобы использовать несколько баз данных, вы можете использовать connection():

$users = DB::connection('foo')->select(...); 

Если эти подобные веб-сайты с аналогичной структурой, то я бы рекомендовал для хранения данных в одной БД (и, возможно, даже в тех же таблицах).

Если вы хотите использовать одни и те же маршруты для всех сайтов, вы можете сохранить БД и видом конфигурации в файле конфигурации и проверьте текущий домен в ПО промежуточного слоя:

if (strpos(request()->server('HTTP_HOST'), 'abc.com')) { 
    session(['site' => 'abc']); 
} 

и получить данные из конфигурации с:

$currentDb = config('sites.db')[session('site')]; 
$currentViewsDir = config('sites.views')[session('site')]; 
Смежные вопросы