Bosnadev\Repositories\Eloquent\Repository::applyCriteria PHP Method

applyCriteria() public method

public applyCriteria ( )
    public function applyCriteria()
    {
        if ($this->skipCriteria === true) {
            return $this;
        }
        foreach ($this->getCriteria() as $criteria) {
            if ($criteria instanceof Criteria) {
                $this->model = $criteria->apply($this->model, $this);
            }
        }
        return $this;
    }

Usage Example

 public function findWhereFirst($where, $columns = ['*'], $or = false)
 {
     parent::applyCriteria();
     $model = $this->model;
     foreach ($where as $field => $value) {
         if ($value instanceof \Closure) {
             $model = !$or ? $model->where($value) : $model->orWhere($value);
         } elseif (is_array($value)) {
             if (count($value) === 3) {
                 list($field, $operator, $search) = $value;
                 $model = !$or ? $model->where($field, $operator, $search) : $model->orWhere($field, $operator, $search);
             } elseif (count($value) === 2) {
                 list($field, $search) = $value;
                 $model = !$or ? $model->where($field, '=', $search) : $model->orWhere($field, '=', $search);
             }
         } else {
             $model = !$or ? $model->where($field, '=', $value) : $model->orWhere($field, '=', $value);
         }
     }
     return $model->get($columns)->first();
 }