在我的symfony项目中,我正在使用doctrine来处理我的数据模型。此外,我安装了sfMasterSlavePlugin,以便为不同类型的查询(写入与读取)使用不同的连接。
由于mysql复制的延迟很小,我的代码无法获取新插入的记录。为了解决这个问题,我想强制这个读取查询的主连接。但我也想让Doctrine_Table的上下文以适当的方式使用我的模型。
有没有办法在Doctrine_Table方法中强制主连接?怎么能这样做呢?
我的班级目前看起来像这样:
class UserTable extends Doctrine_Table
{
public static function getInstance()
{
return Doctrine_Core::getTable('User');
}
public function fetchByLoginFromMaster($login)
{
$q = $this->createQuery()
->from('User')
->where('login = ?', $login)
->fetchOne();
return $q;
}
}
答案 0 :(得分:0)
你可以做的是:
public function fetchByLoginFromMaster($login)
{
$conn = ProjectConfiguration::getActive()->getMasterConnection();
$q = Doctrine_Query::create($conn)
->from('User')
->where('login = ?', $login)
->fetchOne();
return $q;
}
答案 1 :(得分:0)
我还尝试在执行查询之前将连接显式设置为master。但同样,奴隶连接用于执行查询。
我尝试了以下内容:
public function fetchByLoginFromMaster($login)
{
$masterConn = ProjectConfiguration::getActive()->getMasterConnection();
$this->setConnection($masterConn);
$q = $this->createQuery()
->from('User')
->where('login = ?', $login)
->fetchOne();
return $q;
}
谢谢你, 斯蒂芬