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

标签 php mongodb laravel laravel-5 laravel-5.3

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

相关文章:

php - 带有 IN 子句和多个条件的 MYSQL Select 语句

php - 如何在phalcon中的每个必填字段前放置红色星号

php - Mysql,检查行是否存在,是否获取值,如果不插入

javascript - 将数据作为对象传递给 mongoDb,将其用作查询和比较

node.js - MongoDB/Mongoose 索引使查询更快还是变慢?

javascript - Mongoose(或 MongoDB)中的 TransientTransactionError 是什么?

php - Laravel 5:调用未定义的方法 Illuminate\Database\Eloquent\Collection::exists()

php - Twilio 不显示交付状态

javascript - Ajax提交返回错误但更新数据库正常

php - 在 1 个有 2 行的字段中仅选择 1 行