Ejemplo n.º 1
0
 private function smoothnessWhere($query, $condition)
 {
     $condition = $this->getSmoothnessCondition($condition);
     $current_values = $current_has_values = $has_keys = [];
     $default_flag = true;
     foreach ($this->smoothness['columns'] as $key => $column) {
         $value = Request::get($key);
         $current_values[$key] = $value;
         if (Request::exists($key)) {
             $default_flag = false;
             if (!Request::has($key)) {
                 continue;
             }
             $current_has_values[$key] = $value;
             $has_keys[] = $key;
             if (strpos($column, 'scope::') === 0) {
                 $method = camel_case(str_replace('::', '_', $column));
                 if (method_exists($this, $method)) {
                     $this->{$method}($query, $value, $condition);
                 } else {
                     throw new \Exception('Method ' . $method . '() Not Found.');
                 }
             } else {
                 $where = $condition == 'or' ? 'orWhere' : 'where';
                 $query->{$where}($column, 'LIKE', '%' . $value . '%');
             }
         }
     }
     if (!$default_flag && strlen(implode('', $current_values)) == 0) {
         $query->whereRaw('1 <> 1');
     }
     $appends = array_merge($current_values, ['condition' => $condition]);
     $results = new \stdClass();
     $results->values = Collection::make($current_values);
     $results->has_values = Collection::make($current_has_values);
     $results->labels = $this->getSmoothnessLabels();
     $results->has_keys = $has_keys;
     $results->appends = $appends;
     $results->condition = $condition;
     $results->conditions = $this->getSmoothnessConditions($condition);
     View::Share('smoothness', $results);
 }