【问题标题】:Dynamic Database change in LaravelLaravel 中的动态数据库更改
【发布时间】: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 更改连接,但它删除了所有输入变量。

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

【问题讨论】:

    标签: php database laravel laravel-5


    【解决方案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 将在每次查询时连接和断开连接(这是低性能和压力证明)
    猜你喜欢
    • 1970-01-01
    • 2020-04-11
    • 2022-06-25
    • 2021-05-21
    • 2019-04-08
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多