/**
  * @param null $filter
  * @return Category|\Illuminate\Database\Eloquent\Builder|static
  */
 public function getModels($filter = null)
 {
     $models = Category::sortable($this->index_view);
     if ($this->show_trash()) {
         $models = $models->withTrashed();
     }
     if (isset($filter)) {
         foreach ($this->filter_fields as $field) {
             if (trim($filter[$field]) != '') {
                 $values = explode(',', $filter[$field]);
                 $first = true;
                 foreach ($values as $value) {
                     if (in_array($field, $this->filter_numeric_fields)) {
                         if ($first) {
                             $models = $models->Where($field, $value);
                             $first = false;
                         } else {
                             $models = $models->orWhere($field, $value);
                         }
                     } else {
                         if (in_array($field, $this->filter_boolean_fields)) {
                             $value = strtolower($value) == 'x';
                             if ($first) {
                                 $models = $models->Where($field, $value);
                                 $first = false;
                             } else {
                                 $models = $models->orWhere($field, $value);
                             }
                         } else {
                             if ($field == 'parent') {
                                 $value = '%' . $value . '%';
                                 if ($first) {
                                     $models = $models->whereHas('parent', function ($q) use($value) {
                                         $q->where('name', 'like', $value);
                                     });
                                     $first = false;
                                 } else {
                                     $models = $models->orWhereHas('parent', function ($q) use($value) {
                                         $q->where('name', 'like', $value);
                                     });
                                 }
                             } else {
                                 $value = '%' . $value . '%';
                                 if ($first) {
                                     $models = $models->Where($field, 'LIKE', $value);
                                     $first = false;
                                 } else {
                                     $models = $models->orWhere($field, 'LIKE', $value);
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return $models;
 }