Phalconフレームワークの読み書き分離の実現方法

1230 ワード

Phalconフレームワークの読み書き分離の実現方法
DI容器にdbサービスを2つ登録したとします.以下のようにします.
<?php

//   

$di->setShared('dbWrite', function() use ($config) {

    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(

        "host" => $config->w_database->host,

        "username" => $config->w_database->username,

        "password" => $config->w_database->password,

        "dbname" => $config->w_database->name

    ));

});

//    VIP

$di->setShared('dbRead', function() use ($config) {

    return new \Phalcon\Db\Adapter\Pdo\Mysql(array(

        "host" => $config->r_database->host,

        "username" => $config->r_database->username,

        "password" => $config->r_database->password,

        "dbname" =>  $config->r_database->name

    ));

});

そしてModelでこのように処理すればいいです.
<?php

class UserModel extends \Phalcon\Mvc\Model {

    public function initialize() {

        parent::initialize();

        $this->setReadConnectionService('dbRead');

        $this->setWriteConnectionService('dbWrite');

    }

}