我真的不想重写Eloquent来做这件事,而且它足够强大,没有它就可以实现。
无论如何,我正在开发一个使用子域表的云样式应用程序。数据库中的每个表都引用此表来将数据过滤到每个子域中(所有子域都使用相同的数据库)。
所以这通常意味着我需要调用数据的任何地方,我需要应用$model->where('site_id','=',CURRENT_SUBDOMAIN_ID);
那么无论如何在Eloquent中添加类似的东西?仍在学习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 :(得分:0)
当我找不到这个时,我正在思考错误的方法,它不是laravel的全局过滤器,它是一个范围。
Global filtering - how to use global scope in Laravel Eloquent
laravel以创新的方式做的事情之一,似乎与你习惯的有点不同。伟大但令人兴奋。