为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 6 config()->get('database.connections

Laravel 6 config()->get('database.connections

PHP
Helenr 2022-07-16 09:48:17
先决条件在我的本地环境中,我正在使用多个租户和 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\QueryExceptionSQLSTATE[42S02]: Base table or view not found: 1146 Table 'basic_foo.table_bar' doesn't exist...它应该在哪里搜索'tenant_foo.table_bar'尚未解决问题的事情重启 Redis重新安装 Redisphp工匠配置:缓存php工匠缓存:清除php工匠路线:清除php工匠视图:清除php工匠优化作曲家转储自动加载像下面这样简单地将数据库名称更改为tenant_foo是不够的,因为配置数组与basic_foo保持相同。\DB::connection()->setDatabaseName('tenant_foo');想法我想更改\DB::connection()的配置数组,但我不知道除了 config->set() 之外的其他方法。我安装了望远镜这会影响数据库连接吗?还有其他想法吗?
查看完整描述

2 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

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


DB::disconnect(); 

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

DB::reconnect();


查看完整回答
反对 回复 2022-07-16
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

这对我有用:


\DB::disconnect('mysql'); 


Config::set('database.connections.mysql.database', 'tenant_foo');


\DB::reconnect('mysql');


查看完整回答
反对 回复 2022-07-16
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号