CakePHP2 database.phpを本番と開発環境で違うDBを設定るす ITかあさん

ITかあさん

CakePHP2 database.phpを本番と開発環境で違うDBを設定るす

cakephp Config

DBは開発・ステージ・本番で違うのよ!

ひさびさにCakePHPをお届けします。今更感満載ですが、CakePHPの開発と本番とでDBが違う時一緒のdatabase.phpを使いたいなあ!そんな時はdatabase.phpに複数のDBを設定しましょう。

config/database.php

AppControllerにも書く方法があるようですが、database.phpだけ書けばよいので間違いにくいので個人的にはこれが一番好き。

  1. class DATABASE_CONFIG {  
  2.   
  3.     public $default = array(  
  4.         'datasource' => 'Database/Mysql',  
  5.         'persistent' => false,  
  6.         'host' => 'localhost',  
  7.         'login' => 'root',  
  8.         'password' => 'password',  
  9.         'database' => 'databaseName',  
  10.         'prefix' => '',  
  11.         //'encoding' => 'utf8',  
  12.     );  
  13.   
  14.     public $production = array(  
  15.         'datasource' => 'Database/Mysql',  
  16.         'persistent' => false,  
  17.         'host' => 'localhost',  
  18.         'login' => 'user',  
  19.         'password' => 'password',  
  20.         'database' => 'test_database_name',  
  21.         'prefix' => '',  
  22.         //'encoding' => 'utf8',  
  23.     );  
  24.     public function __construct() {  
  25.         if (env('SERVER_NAME') == 'HostNameHere') {  
  26.             $this->default = $this->default;  
  27.         } else {  
  28.             $this->default = $this->production;  
  29.         }  
  30.     }  
  31. }  

こんな感じで、ホスト名によって切り替えればよいですね。