Я следовал этому руководству и все настроил. В руководстве объясняется, как получить субдомен и использовать его для подключения к нужной базе данных. У каждого арендатора будет своя собственная база данных, а также будет главная база данных _admin. Эта база данных _admin будет иметь таблицу арендаторов со столбцом субдомена.
Существует фильтр, который запускается каждый раз и проверяет субдомен по таблице арендаторов. Проблема возникает из-за того, что файл конфигурации базы данных настроен не на главную базу данных _admin, которая включает в себя таблицу арендаторов, а на mysql_tenant, где арендатор устанавливается на лету.
Я думаю, что могу обойти это, вручную указав базу данных для подключения фильтра, вот код, который у меня есть для фильтра.
Route::filter('verifyTenant', function($route, $request)
{
$host = $request->getHost();
$parts = explode('.', $host);
$subdomain = $parts[0];
# Ping DB for tenant match. Note that my Tenant model directs laravel to ping the tenant table in the master db to verify tenant
$tenant = Tenant::where('subdomain', '=', $subdomain)->first();
# If tenant database exists but tenant not in master db, redirect to homepage
if ($tenant == null) return Redirect::to('http://www.'.Config::get('app.domain'));
});
Мне нужно изменить строку:
$tenant = Tenant::where('subdomain', '=', $subdomain)->first();
Я пытался сделать следующее, но получил ошибку:
$tenant = DB::connection('mysql')->Tenant::where('subdomain', '=', $subdomain)->first();
Я получаю следующую ошибку:
Symfony \ Component \ Debug \ Exception \ FatalErrorException
syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
Подробнее здесь: https://stackoverflow.com/questions/231 ... in-laravel