thinkphp6开启了多应用模式,现在想给每个租户一个独立数据库,如何通过访问的域名去动态的切换链接数据库,给出代码
时间: 2024-05-26 17:13:02 浏览: 91
你好!我明白你的问题。以下是代码示例:
首先,在config/database.php中,您可以定义多个数据库连接,并为每个连接指定不同的数据库名称:
'connections' => [
'database_one' => [
'driver' => 'mysql',
'host' => env('DB_HOST_ONE', 'localhost'),
'database' => env('DB_DATABASE_ONE', 'database_one'),
'username' => env('DB_USERNAME_ONE', 'root'),
'password' => env('DB_PASSWORD_ONE', ''),
],
'database_two' => [
'driver' => 'mysql',
'host' => env('DB_HOST_TWO', 'localhost'),
'database' => env('DB_DATABASE_TWO', 'database_two'),
'username' => env('DB_USERNAME_TWO', 'root'),
'password' => env('DB_PASSWORD_TWO', ''),
],
],
接下来,在app/Providers/AppServiceProvider.php中,您可以定义一个boot()函数,该函数将根据当前请求的域名选择正确的数据库连接:
public function boot()
{
$host = request()->getHost();
if ($host == 'example.com') {
Config::set('database.default', 'database_one');
} else if ($host == 'demo.example.com') {
Config::set('database.default', 'database_two');
}
}
最后,您可以使用以下代码在控制器中访问当前数据库连接:
DB::connection()->getDatabaseName();
我希望这可以帮助您!如果您有更多问题,请随时问我。
阅读全文