2014-11-21 4 views
2

Я действительно не хочу, чтобы нужно было переоценивать Eloquent, чтобы сделать это, и его достаточно мощный, чтобы это было возможно без него.Laravel Models, глобальный фильтр

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

Таким образом, это означает, как правило, везде мне нужно вызвать данные мне нужно применить $model->where('site_id','=',CURRENT_SUBDOMAIN_ID);

Так есть в любом случае, чтобы добавить что-то подобное в красноречив? Все еще изучая Laravel, но не нашел никакой информации об этом.

App::before(function($request) 
{ 
    $host = $request->getHost(); 
    $parts = explode('.', $host); 
    $subdomain = $parts[0]; 

    if($subdomain!='main'){ 
     $site_settings = DB::table('sites')->where('subdomain',$subdomain)->first(); 
     if(!$site_settings){ //find out a better way to do a 404 or redirect 
      return Redirect::to('http://testing.app:8000/login'); 
     } 
     Config::set('request.site_name', $site_settings->subdomain); 
     Config::set('request.site_params', json_decode($site_settings->params)); 
     Config::set('request.site_id', $site_settings->id); 
    } 
}); 

Это, как я выяснить, что субдомен клиент в настоящее время, через него у меня есть глобальный для Site_ID, последний шаг в основном применении к модели.

Также каждая модель имеет следующие:

public function site() 
{ 
    return $this->belongsTo('\Site'); 
} 
+0

Используйте глобальную область применения - вот полное решение: http://stackoverflow.com/a/26099020/784588 –

+0

Совсем недавно нашлось это, спасибо. Проблема в том, что я думал о фильтре, когда он более точным, чтобы думать о масштабах. –

ответ

0

Я думал неправильно, когда я не мог найти это, это не глобальный фильтр для Laravel это сфера.

Global filtering - how to use global scope in Laravel Eloquent

Только одна из вещей, которые Laravel делают в инновационном пути, который кажется немного отличается, то, что вы привыкли. Великий, но ум.

Смежные вопросы