Laravel 中的动态数据库更改

Posted

技术标签:

【中文标题】Laravel 中的动态数据库更改【英文标题】:Dynamic Database change in Laravel 【发布时间】:2020-06-16 22:29:29 【问题描述】:

我在 Laravel 5.2 中使用 DB::disconnectDB::reconnection 为多租户系统连接数据库。

代码如下:

DB::disconnect();
Config::set('database.connections.mysql', $config);
DB::reconnect();

其中 $config 是要设置的配置数组,当我必须更改唯一的数据库名称时,这可以正常工作,但是当我想更改数据库的前缀时,它不起作用,每次都需要旧的数据库。

我尝试从中间件config:cache 更改连接,但它删除了所有输入变量。

那么,如何更改数据库连接的前缀?有什么帮助吗?

【问题讨论】:

【参考方案1】:

您需要清除数据库对象的缓存:

// Will disconnect automatically
DB::purge('mysql');

// Register new config
Config::set('database.connections.mysql', $config);

// Will reconnect automatically
DB::table('table')->get();

【讨论】:

非常感谢,laravel 中有什么东西可以防止数据库缓存吗? 我认为没有。 “Databse 缓存”意思是“sql 连接”——这意味着如果你没有数据库缓存,laravel 将在每次查询时连接和断开连接(这是低性能和压力证明)

以上是关于Laravel 中的动态数据库更改的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 动态更改连接

在 Laravel 中动态更改数据库连接 [重复]

在 laravel 中使用 x-editable 更改动态状态

在 laravel 刀片模板中动态更改每个用户的背景图像

如何制作 Laravel 动态数据表? [关闭]

从 laravel 中的数据库动态填充语言翻译数组