我想知道:如何为数据库维护不同的凭据。就像我在本地工作一样,laravel应该依赖数据库A,而在我的服务器上推它后它应该依赖于数据库B?
答案 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)
我认为更好的方法是为local
,staging
和production
使用不同的变量名,如下所示(未经测试)。
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