【问题标题】:laravel 5 Changing database name in runtimelaravel 5 在运行时更改数据库名称
【发布时间】:2016-05-29 17:27:34
【问题描述】:

有没有办法更改连接的数据库名称而不是添加另一个连接? 如果我在 Config.database.connections 中添加 3 或 5 个数据库也没关系,但如果我有 100 个或更多数据库我正在使用呢? 由于都使用相同的主机、用户名和密码,是否有动态更改数据库名称并在整个会话期间使用它? 我试过了

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

但是当我尝试使用查询时,它仍然使用默认的。

【问题讨论】:

    标签: database connection


    【解决方案1】:

    如果有人还在寻找这个问题的答案,答案就在这里:

    您可以在运行时更改数据库名称(不是连接),如下所示:

    在控制器或中间件上导入以下类:

    use Illuminate\Support\Facades\Config;
    use Illuminate\Support\Facades\DB;
    

    然后在函数内部,更改数据库名称如下:

    DB::disconnect('mysql');//here connection name, I used mysql for example
    Config::set('database.connections.mysql.database', $dbName);//new database name, you want to connect to.
    

    此后,每当您进行查询以从任何表中提取任何数据时,它都会搜索提供的新数据库。

    请注意,这是为了在运行时更改SAME连接中的数据库名称。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      在我的情况下,单独使用 Laravel 6 断开连接和设置不起作用。
      我仍然必须像这样重新连接数据库:

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

      更多案例请看Laravel 6 config()->get('database.connections.mysql') not matching DB:connection()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 1970-01-01
        • 2018-10-19
        相关资源
        最近更新 更多