Php 在laravel中访问动态数据库
我正在写一份申请书。我有一个主数据库,存储所有数据库名称。我制作了一个api,它发送db_名称。如果该db_名称存在于master db中,它将获取该值和凭据 之后,我想在新数据库上执行所有操作 我写过这样的控制器函数,但它似乎不起作用:Php 在laravel中访问动态数据库,php,mongodb,laravel,laravel-5,laravel-5.3,Php,Mongodb,Laravel,Laravel 5,Laravel 5.3,我正在写一份申请书。我有一个主数据库,存储所有数据库名称。我制作了一个api,它发送db_名称。如果该db_名称存在于master db中,它将获取该值和凭据 之后,我想在新数据库上执行所有操作 我写过这样的控制器函数,但它似乎不起作用: public function test(Request $request) { $users = Config::where('db_name', '=', $request->db_name)->first(); if ($
public function test(Request $request) {
$users = Config::where('db_name', '=', $request->db_name)->first();
if ($users) {
config(['database.mongodb' => [
'database' => $users->db_name
]]);
}
$contacts = \DB::collection('contacts')->get();
return response()->json($contacts);
}
我正在访问的Url:
http://localhost:8000/api/test?db_name=79b83e17125f770f0294619942586e57
api.php
Route::get('/test','SearchController@test');代码>
我正在使用mongodb和jenssegers/laravel mongodb库。有什么建议吗
你可以从两个方面得到这样的结果
还可以将数据库名称运行时更改为配置文件
经过大量的搜索和谷歌搜索,我找到了一个有效的解决方案
也尝试了新的解决方案,但仍然没有结果。我正在传递的数据库中有一条记录api@ManojKumar我走第二条路,请试一试this@ManojKumar返回DB::connection()->getDatabaseName();请确保更改后的连接。更改后,它不会更改db名称,而是返回null。对于多个连接,这里的文档将手动讨论database.php中提到的连接。目前的情况并非如此。完成所有这些之后,我检查了它是否没有更改database.php中默认的连接设置
public function test(Request $request) {
$users = Config::where('db_name', '=', $request->db_name)->first();
$contacts = \DB::collection($users->db_name.'.contacts')->get();
return response()->json($contacts);
}
public function test(Request $request) {
$users = Config::where('db_name', '=', $request->db_name)->first();
if ($users) {
\Config::set('database.connections.mongodb.database',$users->db_name);
}
// retrun DB::connection()->getDatabaseName()
$contacts = \DB::collection('contacts')->get();
return response()->json($contacts);
}