php - Laravel 6 config()->get ('database.connections.mysql' ) 不匹配 DB :connection()

标签 php laravel redis multi-tenant illuminate-container

先决条件

在我的本地环境中,我使用多个租户和 Redis(需要身份验证)。
为了服务于我正在使用 Valet 的项目。

对于这种情况,我正在处理这两个连接:

- basic_foo (is defined in my .env)
- tenant_foo (is the one to change to during a request)

到目前为止,我已经成功地改变了这样的连接:

config()->set('database.connections.mysql', 
       array_merge(
        config()->get('database.connections.mysql') , 
        ['database' => 'tenant_foo']
    ); 

问题

但是,现在我发现查询构建器存在问题,保持或回退到基本连接。

当我运行时,我得到了 tenant_foo 的预期连接结果(与 Redis 相同)

dd(config()->get('database.connections.mysql'));

当我运行时,我得到了错误但显然是 basic_foo 的活跃结果

dd(\DB::connection()); // returns Illuminate\Database\MySqlConnection

所以总而言之,应用程序将返回此 Illuminate\Database\QueryException

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'basic_foo.table_bar' doesn't exist...

应该在哪里搜索

'tenant_foo.table_bar'

还没有解决问题的事情

  • 重启Redis
  • 重新安装 Redis
  • php artisan 配置:缓存
  • php artisan 缓存:清除
  • php artisan route:clear
  • php artisan view:clear
  • php artisan 优化
  • Composer 转储自动加载

像下面这样简单地将数据库名称更改为 tenant_foo 是不够的,因为配置数组与 basic_foo 相同。

\DB::connection()->setDatabaseName('tenant_foo');

想法

  • 我想更改 \DB::connection() 的配置数组,但我不知道除了 config->set() 之外的其他方法。
  • 我安装了 Telescope 这会影响数据库连接吗?
  • 还有其他想法吗?

最佳答案

要动态更改数据库名称,您应该使用:

DB::disconnect(); 
Config::set('database.mysql.database', 'tenant_foo'); 
DB::reconnect();

关于php - Laravel 6 config()->get ('database.connections.mysql' ) 不匹配 DB :connection(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59580981/

相关文章:

javascript - 在 PHP 或 JS 中自动从文本和默认图像创建图像文件?

php - fatal error : Call to undefined function mysql_connect() and The mysqli extension is missing

php - 当 AJAX 调用时,Laravel 重定向到来自 Controller 的路由

php - 我遇到错误 "InvalidArgumentException Trailing data "

csv - 如何将 ".csv "数据文件导入 Redis 数据库

ruby-on-rails-3 - 在 Redis 中保存和检索字符串数组

php - 我应该为每个类使用一个 getter/setter,还是为每个属性使用一个 getter/setter?

php - 将 php 数组值用于带有内爆函数的 mysql 插入查询

node.js - mix.options 不是一个函数

node.js - XMPP/Jabber 与 Redis Pub/Sub 的实时聊天服务器对比