<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cakephp - shungo blog</title>
	<atom:link href="https://shungoblog.com/tag/cakephp/feed" rel="self" type="application/rss+xml" />
	<link>https://shungoblog.com</link>
	<description>しゅんごブログ</description>
	<lastBuildDate>Fri, 02 May 2025 11:18:15 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shungoblog.com/wp-content/uploads/2022/04/cropped-IMG_0718-32x32.jpg</url>
	<title>cakephp - shungo blog</title>
	<link>https://shungoblog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://shungoblog.com/tag/cakephp/feed"/>
	<item>
		<title>【CakePHP】 DBの接続先を環境ごとに切り替える方法</title>
		<link>https://shungoblog.com/programming/cakephp-change-db-per-environment.html</link>
					<comments>https://shungoblog.com/programming/cakephp-change-db-per-environment.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Mon, 10 Oct 2022 13:27:23 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1548</guid>

					<description><![CDATA[<p>目次 はじめに接続するDBを動的に変更する方法コードコードの解説 はじめに ローカル、ステージング、本番などの環境があって、それぞれ異なるDBに接続する場合があると思います。 今回はホスト名を見て、動的に接続するDBを変 [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/cakephp-change-db-per-environment.html">【CakePHP】 DBの接続先を環境ごとに切り替える方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<div>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">接続するDBを動的に変更する方法</a><ol><li><a href="#toc3" tabindex="0">コード</a></li><li><a href="#toc4" tabindex="0">コードの解説</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">はじめに</span></h2>
<p>ローカル、ステージング、本番などの環境があって、それぞれ異なるDBに接続する場合があると思います。</p>
<p>今回はホスト名を見て、動的に接続するDBを変更する方法をご紹介します。</p>
<h2><span id="toc2">接続するDBを動的に変更する方法</span></h2>
</div>
<div>
<h3><span id="toc3">コード</span></h3>
<p><code>”app/Config/databas.php”</code>を下記のように変更することで動的に接続先を変更できます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-php" data-lang="app/Config/databas.php"><code>&lt;?php class DATABASE_CONFIG { 
  // ローカル環境
  public $default = array(
    'datasource' =&gt;'Database/Mysql',
    'persistent' =&gt;'false',
    'host' =&gt;'db_host',
    'login' =&gt;'user',
    'password' =&gt;'password',
    'database' =&gt;'database_name',
    'schema' =&gt;'public',
    'prefix' =&gt;'',
    'encoding' =&gt;'utf8'
  );

  // staging環境
  public $staging = array(
    'datasource' =&gt;'Database/Mysql',
    'persistent' =&gt;'false',
    'host' =&gt;'db_host',
    'login' =&gt;'user',
    'password' =&gt;'password',
    'database' =&gt;'database_name',
    'schema' =&gt;'public',
    'prefix' =&gt;'',
    'encoding' =&gt;'utf8'
  );

  // 本番環境
  public $production = array(
    'datasource' =&gt;'Database/Mysql',
    'persistent' =&gt;'false',
    'host' =&gt;'da_host',
    'login' =&gt;'user',
    'password' =&gt;'password',
    'database' =&gt;'database_name',
    'schema' =&gt;'public',
    'prefix' =&gt;'',
    'encoding' =&gt;'utf8'
  );

  // ドメインごとにDBを切り替え
  public function __construct() {
    switch (env('HTTP_HOST')) {
      case 'localhost':
        $this-&gt;default =$this-&gt;default;
        break;
      case 'staging.xxxx.jp':
        $this-&gt;default =$this-&gt;staging;
        break;
      case 'production.xxxx.jp':
        $this-&gt;default =$this-&gt;production;
        break;
    }
  }
}</code></pre>
</div>
</div>
<h3><span id="toc4">コードの解説</span></h3>
<p>ローカル環境(<code>”$default”</code>)、ステージング環境(<code>”$staging”</code>)、本番環境(<code>”$production”</code>)のDB接続情報をそれぞれ定義します。</p>
<p>動的に切り替えない場合は、常に<code>$default</code>が読み込まれます。</p>
<p>&nbsp;</p>
<p>動的に切り替えるために、コンストラクタ(<code>”<span>__construct”</span></code>)を使います。</p>
<p>コンストラクタは、新しいオブジェクトが生成されるたびに、このメソッドがコールされます。</p>
<p>そのため、オブジェクトを使用する際の初期化を行うことができます。</p>
<p>(参照: <a rel="nofollow noopener external" target="_blank" href="https://www.php.net/manual/ja/language.oop5.decon.php">コンストラクタとデストラクタ</a>)</p>
<p>&nbsp;</p>
<p>今回はホスト(<code>”<span>env</span><span>(</span><span>'HTTP_HOST'</span><span>)”</span></code>)で動的に切り替えるので、</p>
<p>ホストの値を見て、<code>”$default”</code>を</p>
<p>ローカル -&gt; <code>”$default”</code></p>
<p>ステージング -&gt; <code>”$staging”</code></p>
<p>本番 -&gt; <code>"$production”</code></p>
<p>に変更されるようにしています。</p>
<p>&nbsp;</p><p>The post <a href="https://shungoblog.com/programming/cakephp-change-db-per-environment.html">【CakePHP】 DBの接続先を環境ごとに切り替える方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/cakephp-change-db-per-environment.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
