laravel - Laravel Switch 默认数据库连接动态不起作用
问题描述
我正在尝试连接到租户连接。当我执行
( new Tenant())->configure()->use();
签入日志
\Log::info(DB::connection()->getDatabaseName());
它仍然指向主连接和数据库
\Log::info(DB::connection('tenant')->getDatabaseName());
如果尝试上面它显示连接到正确的数据库;
如何重置数据库连接
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Jenssegers\Mongodb\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class Tenant extends Model
{
use HasFactory;
protected $connection = 'landlord';
protected $guarded = [];
/**
*
*/
public function configure()
{
config([
'database.connections.tenant.database' => $this->database,
]);
DB::purge('tenant');
DB::reconnect('tenant');
Schema::connection('tenant')->getConnection()->reconnect();
return $this;
}
/**
*
*/
public function use()
{
app()->forgetInstance('tenant');
app()->instance('tenant', $this);
return $this;
}
}
我使用 MongoDB 作为数据库;
如何将默认连接从 切换mongodb
到tenant
DB::purge('tenant');
DB::reconnect('tenant');
Schema::connection('tenant')->getConnection()->reconnect();
此命令仍然不会更改默认连接。
我正在写日志
\Log::info(DB::connection('tenant')->getDatabaseName());
\Log::info(DB::connection()->getDatabaseName());
第一个日志指向正确的数据库。第二个日志指向默认数据库
我的config/databas.php
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST'),
'port' => env('MONGO_DB_PORT', '27017'),
'database' => env('MONGO_DB_DATABASE', 'sales_bot'),
'username' => env('MONGO_DB_USERNAME', 'root'),
'password' => env('MONGO_DB_PASSWORD', ''),
'options' => [
'database' => env('MONGO_DB_DATABASE') // sets the authentication database required by mongo 3
]
],
'tenant' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', '127.0.0.1'),
'port' => env('MONGO_DB_PORT', '27017'),
'database' => null,
'username' => env('MONGO_DB_USERNAME', ''),
'password' => env('MONGO_DB_PASSWORD', ''),
],
我的租户表有两条记录,分别是database
名称laravel
和Paravel
[2021-07-02 19:06:51] local.INFO: laravel
[2021-07-02 19:06:51] local.INFO: salesbot
[2021-07-02 19:06:51] local.INFO: paravel
[2021-07-02 19:06:51] local.INFO: salesbot
在日志中我看到上面的条目
解决方案
推荐阅读
- vue.js - 如何将 JS 库与 Vue3 项目集成?
- c++ - 没有默认 ctor 的间接虚拟基会阻止子级拥有默认 ctor,除非中间的每个类也有一个
- ssl - self-signed CA: cannot validate certificate for 192.168.178.66 because it doesn't contain any IP SANs
- ansible - Playbook to run the ansible task after successful execution of before ansible task in windows
- python - 根据列值将 Pandas 列填充到列名 — loc 分配在 for 循环中不起作用
- java - Android应用片段----使用按钮触发另一个开关按钮
- javascript - 如何将选择和单选按钮与json绑定?
- haskell - Haskell 上的 foldr1 和无限列表
- flex-lexer - JFlex 最大读取长度
- python - 如何计算 QPolygon 面积