If an array is passed, keys will be used to alias fields using the value as the
real field to be aliased. It is possible to alias strings, Expression objects or
even other Query objects.
If a callable function is passed, the returning array of the function will
be used as the list of fields.
By default this function will append any passed argument to the list of fields
to be selected, unless the second argument is set to true.
### Examples:
$query->select(['id', 'title']); // Produces SELECT id, title
$query->select(['author' => 'author_id']); // Appends author: SELECT id, title, author_id as author
$query->select('id', true); // Resets the list: SELECT id
$query->select(['total' => $countQuery]); // SELECT id, (SELECT ...) AS total
$query->select(function ($query) {
return ['article_id', 'total' => $query->count('*')];
})
By default no fields are selected, if you have an instance of Cake\ORM\Query and try to append
fields you should also call Cake\ORM\Query::autoFields() to select the default fields
from the table.