Laravel用于本地和生产的不同数据库凭证

时间:2016-10-14 07:17:37

标签: database laravel

我想知道:如何为数据库维护不同的凭据。就像我在本地工作一样,laravel应该依赖数据库A,而在我的服务器上推它后它应该依赖于数据库B?

3 个答案:

答案 0 :(得分:3)

这样做 config / database.php(生产设置)

TRUE

.env文件(本地设置)

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

答案 1 :(得分:1)

我认为更好的方法是为localstagingproduction使用不同的变量名,如下所示(未经测试)。

database.php

use Illuminate\Support\Facades\App;

//... Other code

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => (App::environment('local') ?
        env('DB_HOST', '127.0.0.1') : App::environment('production')) ?
        env('PROD_DB_HOST') : env('STAGING_DB_HOST'),
    'port' => (App::environment('local') ?
        env('DB_PORT', '3306') : App::environment('production')) ?
        env('PROD_DB_PORT') : env('STAGING_DB_PORT'),
    'database' => (App::environment('local') ?
        env('DB_DATABASE', 'forge') : App::environment('production')) ?
        env('PROD_DB_DATABASE') : env('STAGING_DB_DATABASE'),
    'username' => (App::environment('local') ?
        env('DB_USERNAME', 'root') : App::environment('production')) ?
        env('PROD_DB_USERNAME') : env('STAGING_DB_USERNAME'),
    'password' => (App::environment('local') ?
        env('DB_PASSWORD', 'localhost') : App::environment('production')) ?
        env('PROD_DB_PASSWORD') : env('STAGING_DB_PASSWORD'),
    //... other variables
],

//... other code

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=localdb
DB_USERNAME=root
DB_PASSWORD=admin123

STAGING_DB_HOST=127.0.0.1
STAGING_DB_PORT=3306
STAGING_DB_DATABASE=stagdb
STAGING_DB_USERNAME=staginguser
STAGING_DB_PASSWORD=stag123

PROD_DB_HOST=127.0.0.1
PROD_DB_PORT=3306
PROD_DB_DATABASE=proddb
PROD_DB_USERNAME=produser
PROD_DB_PASSWORD=prod123

答案 2 :(得分:0)

使用env并相应地进行更改。

Config :: set(' database.default',' production-DB'); Laravel Configs