public function orWhere($conditions)
    {
        if (is_string($conditions)) {
            $conditions = (array) $conditions;
        }

        if (is_array($conditions)) {
            $args = func_get_args();
            array_shift($args);

            $conditions = array_merge($conditions, $args);

            $this->where(new QueryElement('()', $conditions, ' OR '));
        } elseif (is_callable($conditions)) {
            $query = new static($this->connection);

            $query->where = new QueryElement('()', [], ' OR ');

            call_user_func($conditions, $query);

            $this->where((string) $query->where);
        }

        return $this;
    }