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