現在、AbstractTableGateway を使用する Db モデルがあり、選択/挿入/更新/削除クエリはすべて正常に動作しています。しかし、今は MasterSlaveFeature を追加したいと思っています。これを行う方法について少し混乱しています。ドキュメントは正確に良い例を示していません:
http://zf2.readthedocs.org/en/latest/modules/zend.db.table-gateway.html#tablegateway-features
私は現在、このセットアップを持っています:
namespace Login\Model;
use Zend\Db\TableGateway\Feature\MasterSlaveFeature;
use Zend\Db\TableGateway\Feature\FeatureSet;
use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Expression;
class Passport extends AbstractTableGateway
{
public function __construct($adapter, $slave)
{
$this->table = 'passport';
$this->adapter = $adapter;
$this->featureSet = new FeatureSet();
$this->featureSet->addFeature(new MasterSlaveFeature($slave));
$this->initialize();
}
public function Profile($employeeid)
{
$result = $this->select(function (Select $select) use ($employeeid) {
$select
->columns(array(
'count' => new Expression('COUNT(*)'),
'employeeid',
'passwd',
'group',
'name',
'status',
'timezone',
'timeformat',
'locale',
'max_search'
))
->where($this->adapter->getPlatform()->quoteIdentifier('employeeid') . ' = ' . $this->adapter->getPlatform()->quoteValue($employeeid))
->limit(1);
});
return $result->current();
}
}
$adapter と $slave の 2 つのアダプタを渡しています。それぞれに同じテーブルがありますが、一方が空で、もう一方が実際にデータを持っています。ドキュメントに基づいて、私が持っているものは機能するはずですが、ここで何かが欠けているように感じますが、何がわかりません。
$adapter はデータを持つマスター データベースです $slave はデータを持たないスレーブ データベースです
SELECTS で $slave (現在データがない) からデータを取得し、挿入/更新/削除を $adapter に移動する必要があります。
誰かがこれを理解するのを手伝ってくれますか? ありがとうございました