Laravel动态数据库连接



我有一个网站来处理案件。

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

当我选择一个案例时,我将我的 mysql 连接更改为案例的名称。

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

我该如何处理它 拉拉维尔 ?我骑着连接必须在 .env 或数据库.config 中,但我不知道所有案例的名称,会有很多!

如何根据数据库的名称切换数据库?

谢谢

Edit for 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);

最新更新