public buildQuery ( boolean $overrideLimits = false ) : JDatabaseQuery | ||
$overrideLimits | boolean | Should I override limits |
return | JDatabaseQuery | The database query to use |
public function buildQuery($overrideLimits = false)
{
// Get a "select all" query
$db = $this->getDbo();
$query = $db->getQuery(true)->select('*')->from($this->getTableName());
// Run the "before build query" hook and behaviours
$this->triggerEvent('onBeforeBuildQuery', array(&$query, $overrideLimits));
// Apply custom WHERE clauses
if (count($this->whereClauses)) {
foreach ($this->whereClauses as $clause) {
$query->where($clause);
}
}
$order = $this->getState('filter_order', null, 'cmd');
if (!array_key_exists($order, $this->knownFields)) {
$order = $this->getIdFieldName();
$this->setState('filter_order', $order);
}
$order = $db->qn($order);
$dir = strtoupper($this->getState('filter_order_Dir', null, 'cmd'));
if (!in_array($dir, array('ASC', 'DESC'))) {
$dir = 'ASC';
$this->setState('filter_order_Dir', $dir);
}
$query->order($order . ' ' . $dir);
// Run the "before after query" hook and behaviours
$this->triggerEvent('onAfterBuildQuery', array(&$query, $overrideLimits));
return $query;
}
/** * Overrides the DataModel's buildQuery to allow nested set searches using the provided scopes * * @param bool $overrideLimits * * @return \JDatabaseQuery */ public function buildQuery($overrideLimits = false) { $db = $this->getDbo(); $query = parent::buildQuery($overrideLimits); // Wipe out select and from sections $query->clear('select'); $query->clear('from'); $query->select($db->qn('node') . '.*')->from($db->qn($this->tableName) . ' AS ' . $db->qn('node')); if ($this->treeNestedGet) { $query->join('CROSS', $db->qn($this->tableName) . ' AS ' . $db->qn('parent')); } return $query; }