/**
  * Render sql select conditions
  *
  * @return  $this
  */
 protected function _renderFilters()
 {
     if ($this->_isFiltersRendered) {
         return $this;
     }
     $this->_renderFiltersBefore();
     foreach ($this->_filters as $filter) {
         switch ($filter['type']) {
             case 'or':
                 $condition = $this->_conn->quoteInto($filter['field'] . '=?', $filter['value']);
                 $this->_select->orWhere($condition);
                 break;
             case 'string':
                 $this->_select->where($filter['value']);
                 break;
             case 'public':
                 $field = $this->_getMappedField($filter['field']);
                 $condition = $filter['value'];
                 $this->_select->where($this->_getConditionSql($field, $condition), null, Select::TYPE_CONDITION);
                 break;
             default:
                 $condition = $this->_conn->quoteInto($filter['field'] . '=?', $filter['value']);
                 $this->_select->where($condition);
         }
     }
     $this->_isFiltersRendered = true;
     return $this;
 }
Beispiel #2
0
 /**
  * Method for FULLTEXT search in Mysql, will added generated
  * MATCH ($columns) AGAINST ('$expression' $mode) to where clause
  *
  * @param \Magento\Framework\DB\Select $select
  * @param string|string[] $columns Columns which add to MATCH ()
  * @param string $expression Expression which add to AGAINST ()
  * @param bool $isCondition true=AND, false=OR
  * @param string $mode
  * @return \Magento\Framework\DB\Select
  */
 public function match($select, $columns, $expression, $isCondition = true, $mode = self::FULLTEXT_MODE_NATURAL)
 {
     $fullCondition = $this->getMatchQuery($columns, $expression, $mode);
     if ($isCondition) {
         $select->where($fullCondition);
     } else {
         $select->orWhere($fullCondition);
     }
     return $select;
 }