2012-12-02 5 views
4

현재 AbstractTableGateway를 사용하는 Db 모델이 있고 모든 select/insert/update/delete 쿼리가 제대로 작동합니다. 그러나 이제는 MasterSlaveFeature를 추가하고 싶습니다.이 작업을 수행하는 방법에 대해서는 약간 혼란 스럽습니다. 문서는 정확히 좋은 예를 제공하지 않습니다MasterSlaveFeature How-To

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(); 
} 

} 나는 두 개의 어댑터 $ 어댑터와 $ 슬레이브를 통과하고

, 각 하나는 비어 있고 다른 하나는 실제로 데이터를 가지고 있다는 점을 제외하면 같은 테이블을가집니다. 내가 가지고있는 문서를 바탕으로 작동해야하지만, 나는 여기서 뭔가를 놓치고있는 것처럼 느껴진다. 그러나 무엇을 모른다.

은 $ 어댑터는 데이터가 마스터 데이터베이스 은 $ 노예가 나는 현재에 데이터가없는합니다 ($ 슬레이브에서 데이터를 받아 내 SELECTS 싶습니다

데이터가없는 슬레이브 데이터베이스입니다) 및 삽입/업데이트/삭제는 $ 어댑터로 가야합니다.

누군가 나를 알아낼 수 있습니까? 고마워요

답변

1

업데이트 : ZF 2.0.5부터 버그가 있습니다. 구성이 정확합니다.

업데이트 :이 2.1 릴리스에서 해결해야 같은데

UPDATE : 지금이 해결 및 2.0.7 및 2.1

에서 일하고 확인할 수 있습니다