/** * 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; }
/** * 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; }