Laravel 5 - 如何为同一个 laravel 项目设置超过 1 个数据库凭据(如果可能)?

Laravel 5 - How can I set more than 1 database credentials for the same laravel project (if it is possible)?

我有一个项目必须通过这 2 URLs us_myproject.comes_myproject.com.

访问

它们共享相同的文件夹和代码。实际上只有一个 laravel 项目:htdocs/myproject

取决于 URL 信息必须来自 us_dbes_db,基于使用的 URL。

所以我的问题是如何设置 .env 数据库凭据以指向这两个不同的数据库。我有 2 个不同的数据库、2 个不同的用户和 2 个不同的密码。我怎样才能完成这个任务?

我有以下有效的代码:

URL: us_myproject.com/dbtest


.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=us_db
DB_USERNAME=root
DB_PASSWORD=''

Route::get('dbtest',function(){//Works good
 $tblusertypes=DB::table("tblusertypes")->get();
 return $tblusertypes;
});

如果我这样做 URL: es_myproject.com/dbtest 应该查询 es_db 但我不知道如何设置它。有什么想法吗?

是的,您可以在 Laravel 中设置多个数据库,在 connection 数组中打开 config/database 设置一个新数据库,就像在 mysql 数组中一样 [=16] =]

.env 文件中你可以检测到什么数据库 default

调用它:$result = DB::connection('my_new_database')->table('my_table')->get();

阅读您对其他答案的评论,我想出了以下解决方案:

  1. 打开 config/database.php:

    <?php

    return [
        ...

        'connections' => [

            ...

            'mysql' => [
                'driver'    => 'mysql',
                'host'      => env('DB_HOST', 'localhost'),
                'database'  => env('DB_DATABASE', 'forge'),
                'username'  => env('DB_USERNAME', 'forge'),
                'password'  => env('DB_PASSWORD', ''),
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                'strict'    => false,
            ],

            ...

        ],

        ...

    ];
  1. 像这样编辑文件:

    <?php

    $config = [
        ...

        'connections' => [

            ...

            'mysql' => [
                'driver'    => 'mysql',
                'host'      => env('DB_HOST', 'localhost'),
                'database'  => env('DB_DATABASE', 'forge'),
                'username'  => env('DB_USERNAME', 'forge'),
                'password'  => env('DB_PASSWORD', ''),
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                'strict'    => false,
            ],

            ...

        ],

        ...

    ];

    if( Request::server('HTTP_HOST') == 'es_myproject.com' )
    {
        $config['connections']['mysql'] = [
            'driver' => 'mysql',
            'host' => 'esHOST',
            'database' => 'esDB',
            'username' => 'esUSER',
            'password' => 'esPASSWORD',
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
        ];
    }

    return $config;

这里我假设 .env 文件包含 us_myproject.com 的数据库凭据。