その他
2010年3月15日
DoctrineのMaster&Slaveのコネクションを操作するクラスを作成する方法
こんにちは。笹亀です。
symfonyはバージ ョン2かはSymfonyと頭文字が大文字表記となるとのことで、1.0のころに間違えてSymfonyと書いてツッコミを入れられたことを思い出しました。
さて本日はDoctrineのコネクションをMaster(更新 INSERT,UPDATE,DELETE)とSlave(選択 SELECT)で切り替えを行うProjectConfigurationとDoctrine_Connectionを継承したコネクションを操作するクラスを作成する方法について、ご紹介していきたいと思います。
ある程度の規模の開発をするときにどうしても必要になり、PropelにはあるのになぜDoctrineにはないのだと思い、いろいろソースとWebページを参考に調べながら作成しました。
config/ProjectConfiguration.class.php
<?php
require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();
class ProjectConfiguration extends sfProjectConfiguration
{
protected
$masterConnection = null,
$slaveConnection = null;
public function initializeConnections()
{
//Databaseへの接続情報を取得してコネクションのセット(Slave情報のみを取得)
$file = sfConfig::get('sf_config_dir').'/database_slaves.yml';
$config = file_exists($file) ? sfYaml::load($file) : array();
$slave_connections = array();
foreach