protected function byFilters()
    {
        if (!$this->hasFilters()) {
            throw new UnexpectedValueException(
                'Filters can not be empty.'
            );
        }

        $conditions = [];
        foreach ($this->filters() as $filter) {
            if ($filter instanceof DatabaseExpressionInterface) {
                $filter = $filter->sql();
            }

            if (strlen($filter) > 0) {
                $conditions[] = $filter;
            }
        }

        return $this->compileConditions($conditions);
    }