DataQuery
class DataQuery (View source)
An object representing a query of data from the DataObject's supporting database.
Acts as a wrapper over {@link SQLQuery} and performs all of the query generation. Used extensively by {@link DataList}.
Unlike DataList, modifiers on DataQuery modify the object rather than returning a clone. DataList is immutable, DataQuery is mutable.
Methods
Create a new DataQuery.
Clone this object
Return the {@link DataObject} class that is being queried.
Return the {@link SQLQuery} object that represents the current query; note that it will be a clone of the object.
Remove a filter from the query
Set up the simplest initial query
No description
Ensure that the query is ready to execute.
Return this query's SQL
Return the number of records in this query.
Return the maximum value of the given field in this DataList
Return the minimum value of the given field in this DataList
Return the average value of the given field in this DataList
Return the sum of the values of the given field in this DataList
Runs a raw aggregate expression. Please handle escaping yourself
Return the first row that would be returned by this full DataQuery Note that this will issue a separate SELECT ... LIMIT 1 query.
Return the last row that would be returned by this full DataQuery Note that this will issue a separate SELECT ... LIMIT query.
Append a GROUP BY clause to this query.
Append a HAVING clause to this query.
Create a disjunctive subgroup.
Create a conjunctive subgroup
Set the ORDER BY clause of this query
Reverse order by clause
Set the limit of this query.
Set whether this query should be distinct or not.
Add an INNER JOIN clause to this query.
Add a LEFT JOIN clause to this query.
Traverse the relationship fields, and add the table mappings to the query object state. This has to be called in any overloaded {@link SearchFilter->apply()} methods manually.
Select only the given fields from the given table.
Add the given fields from the given table to the select statement.
Query the given field column from the database and return as an array.
Set an arbitrary query parameter, that can be used by decorators to add additional meta-data to the query.
Set an arbitrary query parameter, that can be used by decorators to add additional meta-data to the query.
Returns all query parameters
Details
__construct($dataClass)
Create a new DataQuery.
__clone()
Clone this object
string
dataClass()
Return the {@link DataObject} class that is being queried.
SQLQuery
query()
Return the {@link SQLQuery} object that represents the current query; note that it will be a clone of the object.
$this
removeFilterOn(string|array $fieldExpression)
Remove a filter from the query
initialiseQuery()
Set up the simplest initial query
$this
setQueriedColumns(array $queriedColumns)
SQLQuery
getFinalisedQuery(array|null $queriedColumns = null)
Ensure that the query is ready to execute.
SS_Query
execute()
Execute the query and return the result as {@link Query} object.
string
sql(array $parameters = array())
Return this query's SQL
int
count()
Return the number of records in this query.
Note that this will issue a separate SELECT COUNT() query.
string
max(string $field)
Return the maximum value of the given field in this DataList
string
min(string $field)
Return the minimum value of the given field in this DataList
string
avg(string $field)
Return the average value of the given field in this DataList
string
sum(string $field)
Return the sum of the values of the given field in this DataList
string
aggregate(string $expression)
Runs a raw aggregate expression. Please handle escaping yourself
SQLSelect
firstRow()
Return the first row that would be returned by this full DataQuery Note that this will issue a separate SELECT ... LIMIT 1 query.
SQLSelect
lastRow()
Return the last row that would be returned by this full DataQuery Note that this will issue a separate SELECT ... LIMIT query.
$this
groupby(string $groupby)
Append a GROUP BY clause to this query.
$this
having(string $having)
Append a HAVING clause to this query.
DataQuery_SubGroup
disjunctiveGroup()
Create a disjunctive subgroup.
That is a subgroup joined by OR
DataQuery_SubGroup
conjunctiveGroup()
Create a conjunctive subgroup
That is a subgroup joined by AND
$this
where(string|array|SQLConditionGroup $filter)
Adds a WHERE clause.
$this
whereAny(string|array|SQLConditionGroup $filter)
Append a WHERE with OR.
$this
sort(string $sort = null, string $direction = null, bool $clear = true)
Set the ORDER BY clause of this query
$this
reverseSort()
Reverse order by clause
limit(int $limit, int $offset = 0)
Set the limit of this query.
$this
distinct(bool $value)
Set whether this query should be distinct or not.
$this
innerJoin(string $table, string $onClause, string $alias = null, int $order = 20, array $parameters = array())
Add an INNER JOIN clause to this query.
$this
leftJoin(string $table, string $onClause, string $alias = null, int $order = 20, array $parameters = array())
Add a LEFT JOIN clause to this query.
string
applyRelation(string|array $relation)
Traverse the relationship fields, and add the table mappings to the query object state. This has to be called in any overloaded {@link SearchFilter->apply()} methods manually.
$this
subtract(DataQuery $subtractQuery, string $field = 'ID')
Removes the result of query from this query.
$this
selectFromTable(string $table, array $fields)
Select only the given fields from the given table.
$this
addSelectFromTable(string $table, array $fields)
Add the given fields from the given table to the select statement.
array
column(string $field = 'ID')
Query the given field column from the database and return as an array.
$this
setQueryParam(string $key, mixed $value)
Set an arbitrary query parameter, that can be used by decorators to add additional meta-data to the query.
It's expected that the $key will be namespaced, e.g, 'Versioned.stage' instead of just 'stage'.
mixed
getQueryParam(string $key)
Set an arbitrary query parameter, that can be used by decorators to add additional meta-data to the query.
array
getQueryParams()
Returns all query parameters