我正在处理一个应用程序。我有一个主数据库,我在其中存储所有数据库名称。我做了一个 api,它发送 db_name。如果该 db_name 存在于主数据库中,它会获取该值和凭据。
之后,我想对该新数据库执行所有操作。
我写过这样的 Controller 函数,但它似乎不起作用:
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);
}
我正在访问的网址:
http://localhost:8000/api/test?db_name=79b83e17125f770f0294619942586e57
api.php
Route::get('/test', 'SearchController@test');
我正在使用 mongodb 和 jenssegers/laravel-mongodb 库。有什么建议吗?
最佳答案
you can get like that two way
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);
}
also you can change database name run time into config file
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);
}
关于php - 在 laravel 中访问动态数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450336/