gpt4 book ai didi

php - 在 laravel 中访问动态数据库

转载 作者:可可西里 更新时间:2023-11-01 10:49:15 24 4
gpt4 key购买 nike

我正在处理一个应用程序。我有一个主数据库,我在其中存储所有数据库名称。我做了一个 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.phpRoute::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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com