2

我正在使用 PHP 锂框架。有没有办法通过配置设置安全 => '多数'。

我正在使用 mongodb 复制,并希望确保在驱动程序返回成功之前将数据写入大多数副本集成员。

我正在使用 PHP 5.3 和 MongoDB 2.2.x

谢谢高塔姆

4

2 回答 2

4

这不是您问题的直接答案,但您可以在数据库中设置默认行为。

 cfg = rs.conf()
 cfg.settings = {}
 cfg.settings.getLastErrorDefaults = {w: "majority", j: true}
 rs.reconfig(cfg)

在 Lithium 中,您应该可以使用过滤器来做到这一点:

 Connections::get('default')->applyFilter(array('create', 'update', 'delete'), function($self, $params, $chain){
     $params['options']['safe'] = true;
      return $chain->next($self, $params, $chain);
});

或者直接在查询中:

if (MyModel::update($query, $conditions, array(‘safe’ => true))) {
    // success
}
于 2012-11-12T06:28:17.550 回答
2

我们对此有一个开放的拉取请求,可让您添加'safe' => true到您的数据库配置中。很快就会合并。

否则,Nils 发布的解决方案应该会很好用。

于 2012-11-12T15:31:03.997 回答