在 laravel 中访问动态数据库

Accessing dynamic database in laravel

我正在处理一个应用程序。我有一个主数据库,我在其中存储所有数据库名称。我做了一个 api,发送 db_name。如果 db_name 存在于主数据库中,它会获取该值和凭据。

之后,我想对该新数据库执行所有操作。

我写过这样的控制器函数,但是好像不行:

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 库。有什么建议吗?

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);
}

经过大量搜索和谷歌搜索,我找到了一个有效的解决方案

https://lukevers.com/2015/03/25/on-the-fly-database-connections-with-laravel-5