Пример #1
0
 /**
  * Set datasource
  * 
  * @return void
  */
 protected function _setDataSource()
 {
     $this->_dataSource = $this->_model->queryBuilder();
     foreach ($this->_joins as $table) {
         $this->_dataSource->columnsJoinOne($table);
     }
     $this->_dataSource->columns($this->_columns);
     foreach ($this->_conditions as $cond) {
         if (is_array($cond)) {
             $this->_dataSource->addWhere($cond['cond'], $cond['params']);
         } else {
             $this->_dataSource->addWhere($cond);
         }
     }
     $sort = $this->_grid->getSortKey();
     if (null === $sort) {
         $sort = $this->_model->getOrderExpr();
     }
     $direction = $this->_grid->getSortDirection();
     if (null === $direction) {
         $direction = $this->_model->getOrderAsc() ? "ASC" : "DESC";
     }
     if ($sort) {
         $alias = $this->_dataSource->getCorrelationName($sort);
         if ($alias) {
             $sort = $alias . "." . $sort;
         }
         if ($direction) {
             $this->_dataSource->orderBy($sort . ' ' . $direction);
         } else {
             $this->_dataSource->orderBy($sort);
         }
     }
 }
Пример #2
0
 /**
  * Apply filter to query builder
  *
  * @param \Engine\Mvc\Model\Query\Builder $dataSource
  * @return string
  */
 public function filterWhere(Builder $dataSource)
 {
     $model = $dataSource->getModel();
     if ($this->_column === self::COLUMN_ID) {
         $expr = $model->getPrimary();
         $alias = $dataSource->getAlias();
     } elseif ($this->_column === self::COLUMN_NAME) {
         $expr = $model->getNameExpr();
         $alias = $dataSource->getAlias();
     } else {
         $expr = $this->_column;
         $alias = $dataSource->getCorrelationName($this->_column);
     }
     if (!$alias) {
         throw new \Engine\Exception("Field '" . $this->_column . "' not found in query builder");
     }
     return $alias . "." . $expr . " " . $this->getFilterStr($dataSource);
 }
Пример #3
0
 /**
  * Apply filter to query builder
  *
  * @param \Engine\Mvc\Model\Query\Builder $dataSource
  * @return string
  */
 public function filterWhere(Builder $dataSource)
 {
     $where = [];
     $adapter = $dataSource->getModel()->getReadConnection();
     $exprEq = $adapter->escapeString($this->_value);
     $exprLike = $adapter->escapeString("%{$this->_value}%");
     $exprBegins = $adapter->escapeString("{$this->_value}%");
     $model = $dataSource->getModel();
     foreach ($this->_columns as $column => $criteria) {
         if ($column === self::COLUMN_ID) {
             $alias = $dataSource->getAlias();
             $column = $model->getPrimary();
         } elseif ($column === self::COLUMN_NAME) {
             $alias = $dataSource->getAlias();
             $column = $model->getNameExpr();
             $t = true;
         } else {
             $alias = $dataSource->getCorrelationName($column);
         }
         if ($criteria === self::CRITERIA_EQ) {
             $where[] = "{$alias}.{$column} = {$exprEq}";
         } elseif ($criteria === self::CRITERIA_LIKE) {
             $where[] = "{$alias}.{$column} LIKE {$exprLike}";
         } elseif ($criteria === self::CRITERIA_BEGINS) {
             $where[] = "{$alias}.{$column} LIKE {$exprBegins}";
         } elseif ($criteria === self::CRITERIA_MORE) {
             $where[] = "`{$alias}`.`{$column}` > {$exprEq}";
         } elseif ($criteria === self::CRITERIA_LESS) {
             $where[] = "{$alias}.{$column} < {$exprEq}";
         }
     }
     if (count($where) > 0) {
         $where = implode(" OR ", $where);
         return "({$where})";
     }
     return false;
 }