件CakePHPには利用するデータベース定義を複数定義しておける機能がありますが、その使い分けに関するアイデアです。ある解決策よく開発環境と本番環境で自動的にデータベース接続を切り替えられるように、以下のようにDATABASE_CONFIGクラスのコンストラクタを改良したり、AppModelクラスのコンストラクタに現在の環境を判別できるような設定を書いたりするアイデア多く見かけられます。'production';}}よくある解決策の問題点よくある解決策では、httpから利用する場合には非常に便利で良いのですが、コンソールから利用する場合、この設定では不都合が発生します。schemaコマンドを利用する場合です。コンソールではREMOTE_ADDRやSERVER_ADDRなどの環境変数が利用できません。そのため、コンソールで利用する場合はリモートで利用しているのかローカルで利用しているのかを環境変数から判別することができません。-connectionオプションで利用する接続を選択してやれば良いと考えてしまうのですが、CakePHPのコンソールから起動するschemaコマンドは、-connectionオプションで指定されたデータベース接続(指定されなければdefault)とModelのデータベース接続(Model::$useDbConfig)が一致しない場合、そのModelのスキーマを読み込んでくれません。実行しているファイルのパスを見て判別するような荒技もありますが、実行ファイルのパスが被らない保証も無いので、こちらも確実とはいえません。シンプルな解決策ではどうすれば良いか、というと、Configureクラスを利用する方法が一番わかりやすくてベターです。下記のように設定します。DATABASE_CONFIGクラスを下記のように記述します。$this->{$connection};}}}この方法であれば、データベースを切り替えたいときはデバッグモードの切り替えのように設定値を変更するだけで済みますし、ローカルに依存するコードを記述する必要もなくなります。今後新しいデータベース接続を追加した場合にも、設定値を変更するだけで対応可能なので、今後の拡張性の面でも安心できます。いうわけで、こちらを参考に、Configure::readを使って管理するようにした。この方法が良いのは、3つのサーバすべてにデータベースの指定「default」が使えるって事。公開はされませんURLコメント一部のHTMLタグが利用可能です。TECHは、WebデザインやWebシステム開発、Webのトレンドやニュースなど、Webに関する技術情報を中心に、WebデザイナーやWebプログラマーの方々に役立つ情報を発信しているブログです。@jyokyokuFacebookgithub家富正幸への直通メール株式会社インスパイアデザイン取締役の37歳、プログラミングとデザインを行う元計測制御系システムエンジニア。20歳でクリエイター系の専門学校を卒業後、なぜか全く知識の無い計測制御系の会社に就職し、LabVIEW言語を利用した計測制御系のシステム開発に3年ほど携わる。Webデザイナーへの道をあきらめきれずに転職。Webデザインをメインとして、客先でのディレクションやWebアプリケーションのプログラミングにも関わる。その後、現社長の浅賀理生と共に株式会社インスパイアデザインを立ち上げ、現在に至る。