在 Laravel 中动态设置数据库连接和语言
Set database connection and language dynamically in Laravel
我有 3 个域指向同一个 Laravel 应用程序。我想要的是让每个人都连接到自己的数据库并根据 TLD 加载自己的语言文件。我可以设置这些设置的文件是什么?我可以直接在配置文件中执行此操作,还是在加载配置之前执行某些事件。
我有一个简短的函数,可以解析域并获取 TLD,基于此,在快速验证后,我们将知道将使用什么数据库和语言。
您可以使用中间件轻松做到这一点 - 请在此处查看一些文档:https://laravel.com/docs/master/middleware
您需要一个中间件,它可以在执行控制器之前针对所有请求 运行。该中间件应根据域配置应用程序语言环境和使用的连接,然后执行请求。类似于以下逻辑的东西应该可以解决问题:
public function handle($request, Closure $next)
{
$host = $request->getHost();
//do your logic that determines the language and connection to use based on TLD
$language = $this->getLanguageForTld($host);
//set connection used
Config::set('database.default', $language);
//set application locale
App::setLocale($language);
return $next($request);
}
我有 3 个域指向同一个 Laravel 应用程序。我想要的是让每个人都连接到自己的数据库并根据 TLD 加载自己的语言文件。我可以设置这些设置的文件是什么?我可以直接在配置文件中执行此操作,还是在加载配置之前执行某些事件。
我有一个简短的函数,可以解析域并获取 TLD,基于此,在快速验证后,我们将知道将使用什么数据库和语言。
您可以使用中间件轻松做到这一点 - 请在此处查看一些文档:https://laravel.com/docs/master/middleware
您需要一个中间件,它可以在执行控制器之前针对所有请求 运行。该中间件应根据域配置应用程序语言环境和使用的连接,然后执行请求。类似于以下逻辑的东西应该可以解决问题:
public function handle($request, Closure $next)
{
$host = $request->getHost();
//do your logic that determines the language and connection to use based on TLD
$language = $this->getLanguageForTld($host);
//set connection used
Config::set('database.default', $language);
//set application locale
App::setLocale($language);
return $next($request);
}