2014-11-21 69 views
2

我真的不想要重寫Eloquent來做到這一點,它的強大,足以讓它沒有它。Laravel模型,全局過濾器

無論如何,我正在使用一個雲表格應用程序,使用一個表的子域名。數據庫中的每個表都引用此表以將數據過濾到每個子域中(全部使用相同的數據庫)。

所以這通常意味着無處不在我需要調用數據,我需要申請$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 – 2014-11-21 23:37:14

+0

剛剛發現,謝謝。問題是我想過濾時,它更準確地思考範圍大聲笑。 – 2014-11-22 00:43:19

回答