2017-02-20 9 views
0

私はこれが間違っていることを知っていますが、私はこの種の仕事のためにGoogleを試しましたが、何も見つかりませんでした。私はLaravel環境上if check、ベースを作るしようとしている データベース接続を自動的に設定する

目標は、私は私の地元の環境と私のHerokuの制作環境との間で適切にデータベース接続を設定します。

connections' => [ 

    'mysql'  => [ 

     'driver'  => 'mysql', 

     if(env('APP_ENV') == 'local'){ 

      'host'  => env('DB_HOST'), 
      'database' => env('DB_DATABASE'), 
      'username' => env('DB_USERNAME'), 
      'password' => env('DB_PASSWORD'), 
      'unix_socket' => env('UNIX_SOCKET'), 

     }else{ 

      'host'  => parse_url(getenv("DATABASE_URL"))["host"], 
      'database' => substr(parse_url(getenv("DATABASE_URL"))["path"], 1), 
      'username' => parse_url(getenv("DATABASE_URL"))["user"], 
      'password' => parse_url(getenv("DATABASE_URL"))["pass"], 

     } 

     'charset'  => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix'  => '', 
     'strict'  => false, 
    ] 

], 

+0

あなたはどちらのバージョンを使用していますか? –

答えて

1

Cascading configパッケージがあなたのために素晴らしい仕事だろうような音。 Laravel 4は、そのパッケージと非常によく似たものを持っていました。

あなたはHerokuの環境にconfig.localフォルダとconfig.productionフォルダを持つことができます。

例フォルダ構成

config/ (production) 

├── database.php 

config.local/ (local) 

├── database.php 

のconfig/database.phpで(製造)(ローカル)

... 
connections' => [ 
    'mysql'  => [ 
     'driver'  => 'mysql', 
     'host'  => 'Heroku Host', 
     'database' => 'Heroku Database', 
     'username' => 'Heroku Username', 
     'password' => 'Heroku Password', 
     'unix_socket' => 'Heroku Socket', 
    ],  
], 
... 

config.local/database.phpで

... 
connections' => [ 
    'mysql'  => [ 
     'driver'  => 'mysql', 
     'host'  => env('DB_HOST'), 
     'database' => env('DB_DATABASE'), 
     'username' => env('DB_USERNAME'), 
     'password' => env('DB_PASSWORD'), 
    ],  
], 
... 
+0

答えの一部としてサンプルやサンプルの提案をリンクしてください。 – ihue

+0

@hue例を追加しました。パッケージの動作の詳細があります:https://github.com/phanan/cascading-config – Sekonda

+1

ニースの詳細な答え、私はそれが好きです。 – ihue

1

exmaple mysql-herokuという名前の別の接続を定義することができます。その後、モデルでprotected $connection = (env('APP_ENV') == 'local') ? 'mysql' : 'mysql-heroku';を実行できます。

+0

クールなレットトリック!私はすきです。 – ihue

関連する問題