FOF30\Model\DataModel::buildQuery PHP 메소드

buildQuery() 공개 메소드

Build the query to fetch data from the database
public buildQuery ( boolean $overrideLimits = false ) : JDatabaseQuery
$overrideLimits boolean Should I override limits
리턴 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;
    }

Usage Example

예제 #1
0
 /**
  * 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;
 }