/** * Perform column filtering * * @return mixed */ public function filtering() { $filters = $this->request->getFilter(); if ($filters) { $this->columnMapping(); foreach ($filters as $key => $keyword) { $keyword = '%' . $keyword . '%'; $column = $this->getColumnName($key); if (in_array($key, $this->havingColumns)) { $this->query->having($key, 'like', $keyword); continue; } $this->query->where($column, 'like', $keyword); } } }
/** * Add a "having" clause to the query. * * @param string $column * @param string $operator * @param string $value * @param string $boolean * @return $this * @static */ public static function having($column, $operator = null, $value = null, $boolean = 'and') { return \Illuminate\Database\Query\Builder::having($column, $operator, $value, $boolean); }
/** * Adds condition to the query builder * * @param \Illuminate\Database\Query\Builder $builder * @param string $type * @param string $columnName * @param string $operator * @param string $value * @return \Illuminate\Database\Query\Builder */ private function _addQueryCondition($builder, $type, $columnName, $operator, $value) { switch ($type) { // Having by case 'having': $builder->having($columnName, $operator, $value); break; // Standard where statement // Standard where statement case 'where': default: $builder->where($columnName, $operator, $value); break; } return $builder; }