设置安全=>使用Li3的MongoDB的“多数”

时间:2012-11-12 01:04:32

标签: php mongodb lithium

我正在使用PHP Lithium Framework。有没有办法设置safe => “多数”通过配置。

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

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

由于 高塔姆

2 个答案:

答案 0 :(得分:4)

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

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

在锂电池中你应该能够用过滤器做到这一点:

 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
}

答案 1 :(得分:2)

我们有一个open pull request,可以将'safe' => true添加到您的数据库配置中。将很快合并。

否则,Nils发布的解决方案应该很有效。