Extends
lithium\data\Source
Read from document
Parameters
- string $query
- array $options
Returns
objectSource
public function read($query, array $options = array()) {
$this->_checkConnection();
$defaults = array('return' => 'resource');
$options += $defaults;
$params = compact('query', 'options');
$_config = $this->_config;
return $this->_filter(__METHOD__, $params, function($self, $params) use ($_config) {
$query = $params['query'];
$options = $params['options'];
$args = $query->export($self);
$source = $args['source'];
if ($group = $args['group']) {
$result = $self->invokeMethod('_group', array($group, $args, $options));
$config = array('class' => 'set') + compact('query') + $result;
return $self->item($query->model(), $config['data'], $config);
}
$collection = $self->connection->{$source};
if ($source == "{$_config['gridPrefix']}.files") {
$collection = $self->connection->getGridFS();
}
$result = $collection->find($args['conditions'], $args['fields']);
if ($query->calculate()) {
return $result;
}
$resource = $result->sort($args['order'])->limit($args['limit'])->skip($args['offset']);
$result = $self->invokeMethod('_instance', array('result', compact('resource')));
$config = compact('result', 'query') + array('class' => 'set');
return $self->item($query->model(), array(), $config);
});
}