Extends
lithium\data\Source
Update document
Parameters
- string $query
- array $options
Returns
booleanSource
public function update($query, array $options = array()) {
$defaults = array('upsert' => false, 'multiple' => true, 'safe' => false, 'fsync' => false);
$options += $defaults;
$this->_checkConnection();
$params = compact('query', 'options');
$_config = $this->_config;
$_exp = $this->_classes['exporter'];
return $this->_filter(__METHOD__, $params, function($self, $params) use ($_config, $_exp) {
$options = $params['options'];
$query = $params['query'];
$args = $query->export($self, array('keys' => array('conditions', 'source', 'data')));
$source = $args['source'];
$data = $args['data'];
if ($query->entity()) {
$data = $_exp::get('update', $data);
}
if ($source == "{$_config['gridPrefix']}.files" && isset($data['update']['file'])) {
$args['data']['_id'] = $self->invokeMethod('_saveFile', array($data['update']));
}
$update = $query->entity() ? $_exp::toCommand($data) : $data;
if ($options['multiple'] && !preg_grep('/^\$/', array_keys($update))) {
$update = array('$set' => $update);
}
if ($self->connection->{$source}->update($args['conditions'], $update, $options)) {
$query->entity() ? $query->entity()->sync() : null;
return true;
}
return false;
});
}