我目前有使用 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,每个都有相同的表,除了一个是空的,另一个实际上有数据。根据我应该工作的文档,但我觉得我在这里遗漏了一些东西,但不知道是什么。
$adapter 是有数据的主数据库 $slave 是没有数据的从数据库
我希望我的 SELECTS 从 $slave(当前没有数据)中获取数据,并且 Insert/Update/Delete 应该转到 $adapter。
有人可以帮我解决这个问题吗?谢谢