我真的不想重写 Eloquent 来做到这一点,而且它足够强大,没有它也可以做到这一点。
无论如何,我正在开发一个云风格的应用程序,该应用程序使用子域的表。数据库中的每个表都引用此表以将数据筛选到每个子域中(都使用相同的数据库)。
所以这意味着通常我需要调用我需要应用的数据的任何地方都需要应用$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');
}
当我找不到这个时,我想错了,它不是 laravel 的全局过滤器,它是一个范围。
全局过滤 - 如何在 Laravel Eloquent 中使用全局范围
只是Laravel以创新的方式所做的一件事,似乎与您习惯的略有不同。很棒,但令人兴奋。