Php Laravel动态数据库连接

Php Laravel动态数据库连接,php,laravel,Php,Laravel,我有一个处理案件的网站 我的第一个页面是一个包含所有案例的表,该表基于我的第一个数据库,所有案例都在一个表中 选择案例时,我将mysql连接更改为案例名称 例如,我连接到案例数据库,当我点击案例A001时,我将数据库更改为A001 我怎样才能和拉威尔相处?我知道连接必须在.env或database.config中,但我不知道所有案例的名称,而且会有很多 如何根据DB的名称切换DB 谢谢 为ErkanÖzkök编辑: 我在我的电脑里试过你的密码controler@table但它不起作用: // $

我有一个处理案件的网站

我的第一个页面是一个包含所有案例的表,该表基于我的第一个数据库,所有案例都在一个表中

选择案例时,我将mysql连接更改为案例名称

例如,我连接到案例数据库,当我点击案例A001时,我将数据库更改为A001

我怎样才能和拉威尔相处?我知道连接必须在.env或database.config中,但我不知道所有案例的名称,而且会有很多

如何根据DB的名称切换DB

谢谢

为ErkanÖzkök编辑:

我在我的电脑里试过你的密码controler@table但它不起作用:

// $lots = Lot::on($lot_id)->first();
            $connection_name = 'A002';

            //firstly, define configurations
            Config::set('database.connections.' . $connection_name, array(
                    'host'      => env('DB_HOST', '127.0.0.1'),
                    'driver'    => 'mysql',
                    'database'  => env('DB_DATABASE', $connection_name),
                    'username'  => env('DB_USERNAME', 'root'),
                    'port'      => env('DB_PORT', '3306'),
                    'password'  => env('DB_PASSWORD', ''),
                    'charset'   => 'utf8mb4',
                    'collation' => 'utf8mb4_unicode_ci',
                    'prefix'    => '',
                    'strict'    => true,
            ));

            //then activate the connection.
            Config::set('database.default', $connection_name);

附加问题:是否可以在某个时间点删除连接并使用我使用的任何功能,或者每次都必须初始化连接?

当然,您可以动态更改数据库连接

    $connection_name = 'A001';

    //firstly, define configurations
    Config::set('database.connections.' . $connection_name, array(
            'host'      => env('DB_HOST', '127.0.0.1'),
            'driver'    => 'mysql',
            'database'  => $connection_name,
            'username'  => 'root',
            'port'      => '3306',
            'password'  => '',
            'charset'   => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix'    => '',
            'strict'    => true,
    ));

    //then activate the connection.
    Config::set('database.default', $connection_name);

我不知道你在用哪个图书馆。但是PDO不要求连接字符串中包含数据库名称。您只需像database1.table1或database2.table1一样引用它,每个数据库中的表都是相同的吗?听起来是个奇怪的设计。您使用的是雄辩的模型还是仅仅是Laravel的查询生成器?@Devon yes表是相同的,我将它们分开,因为每个案例都有大量数据。我还有什么其他选项?@frz3993那么在laravel中,我如何选择/插入/更新DB名称?为什么不在表中使用case_id外键而不是单独的数据库?我在控制器上尝试过,但它不起作用。仍然连接到默认数据库。我在我的控制器上完全使用您的代码。我有一个函数调用表,可以通过ajax将bdd数据返回到我的数据中。我更新了我的问题。我更新了我的代码,它是关于env('DB_DATABASE',$connection_name)部分的。现在似乎可以工作了!当我访问站点的某个部分(比如/case/A001)时,是否可以设置此连接,而不必为每个功能创建连接?