Contains the characteristics for an object that is attached to a repository and can retrieve results based on any criteria.
__call( string $method , array $arguments )
Enables calling methods from the result set as if they were from this class
$method
$arguments
mixed
BadMethodCallException
_decorateResults( Traversable $result )
Decorates the results iterator with MapReduce routines and formatters
$result
Cake\Datasource\ResultSetInterface
_decoratorClass( )
Returns the name of the class to be used for decorating results
string
_execute( )
Executes this query and returns a traversable object containing the results
Traversable
aliasField( string $field , string $alias null )
Returns a key => value array representing a single aliased field that can be passed directly to the select() method. The key will contain the alias and the value the actual field name.
If the field is already aliased, then it will not be changed. If no $alias is passed, the default table for this query will be used.
$field
$alias
optional null array
aliasFields( array $fields , string|null $defaultAlias null )
Runs aliasField()
for each field in the provided list and returns the result under a single array.
$fields
$defaultAlias
optional null array
all( )
Fetch the results for this query.
Will return either the results set through setResult(), or execute this query and return the ResultSetDecorator object ready for streaming of results.
ResultSetDecorator is a traversable object that implements the methods found on Cake\Collection\Collection.
Cake\Datasource\ResultSetInterface
applyOptions( array $options )
Populates or adds parts to current query clauses using an array. This is handy for passing all query clauses at once.
$options
mixed
cache( false|string|Closure $key , string|Cake\Cache\CacheEngine $config 'default' )
Enable result caching for this query.
If a query has caching enabled, it will do the following when executed:
// Simple string key + config $query->cache('my_key', 'db_results'); // Function to generate key. $query->cache(function ($q) { $key = serialize($q->clause('select')); $key .= serialize($q->clause('where')); return md5($key); }); // Using a pre-built cache engine. $query->cache('my_key', $engine); // Disable caching $query->cache(false);
$key
Cake\Cache\CacheEngine
$config
optional 'default' mixed
eagerLoaded( boolean|null $value null )
Sets the query instance to be an eager loaded query. If no argument is passed, the current configured query _eagerLoaded
value is returned.
$value
optional null mixed
first( )
Returns the first result out of executing this query, if the query has not been executed before, it will set the limit clause to 1 for performance reasons.
$singleUser = $query->select(['id', 'username'])->first();
mixed
firstOrFail( )
Get the first result from the executing query or raise an exception.
mixed
Cake\Datasource\Exception\RecordNotFoundException
formatResults( callable $formatter null , boolean|integer $mode 0 )
Registers a new formatter callback function that is to be executed when trying to fetch the results from the database.
Formatting callbacks will get a first parameter, a ResultSetDecorator
, that can be traversed and modified at will.
Callbacks are required to return an iterator object, which will be used as the return value for this query's result. Formatter functions are applied after all the MapReduce
routines for this query have been executed.
If the first argument is set to null, it will return the list of previously registered map reduce routines.
If the second argument is set to true, it will erase previous formatters and replace them with the passed first argument.
// Return all results from the table indexed by id $query->select(['id', 'name'])->formatResults(function ($results) { return $results->indexBy('id'); }); // Add a new column to the ResultSet $query->select(['name', 'birth_date'])->formatResults(function ($results) { return $results->map(function ($row) { $row['age'] = $row['birth_date']->diff(new DateTime)->y; return $row; }); });
$formatter
optional null $mode
optional 0 mixed
getIterator( )
Executes this query and returns a results iterator. This function is required for implementing the IteratorAggregate interface and allows the query to be iterated without having to call execute() manually, thus making it look like a result set instead of the query itself.
Iterator
getOptions( )
Returns an array with the custom options that were applied to this query and that were not already processed by another method in this class.
$query->applyOptions(['doABarrelRoll' => true, 'fields' => ['id', 'name']); $query->getOptions(); // Returns ['doABarrelRoll' => true]
array
mapReduce( callable $mapper null , callable $reducer null , boolean $overwrite false )
Register a new MapReduce routine to be executed on top of the database results Both the mapper and caller callable should be invokable objects.
The MapReduce routing will only be run when the query is executed and the first result is attempted to be fetched.
If the first argument is set to null, it will return the list of previously registered map reduce routines.
If the third argument is set to true, it will erase previous map reducers and replace it with the arguments passed.
$mapper
optional null $reducer
optional null $overwrite
optional false mixed
repository( Cake\Datasource\RepositoryInterface $table null )
Returns the default table object that will be used by this query, that is, the table that will appear in the from clause.
When called with a Table argument, the default table object will be set and this query object will be returned for chaining.
Cake\Datasource\RepositoryInterface
$table
optional null Cake\Datasource\RepositoryInterface|$this
setResult( Cake\Datasource\ResultSetInterface $results )
Set the result set for a query.
Setting the resultset of a query will make execute() a no-op. Instead of executing the SQL query and fetching results, the ResultSet provided to this method will be returned.
This method is most useful when combined with results stored in a persistent cache.
Cake\Datasource\ResultSetInterface
$results
mixed
toArray( )
Returns an array representation of the results after executing the query.
array
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.Datasource.QueryTrait.html