4

現在、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 に移動する必要があります。

誰かがこれを理解するのを手伝ってくれますか? ありがとうございました

4

1 に答える 1

1

更新:ZF 2.0.5の時点で、バグがあります。構成は正しいです。

更新:これは2.1リリースで解決されるはずです

更新:これが解決され、2.0.7および2.1で機能していることを確認できます

于 2013-03-08T21:33:06.387 に答える