def paginate(self, per_page=None, current_page=None, columns=None):
        """
        Paginate the given query.

        :param per_page: The number of records per page
        :type per_page: int

        :param current_page: The current page of results
        :type current_page: int

        :param columns: The columns to return
        :type columns: list

        :return: The paginator
        """
        if columns is None:
            columns = ["*"]

        total = self.to_base().get_count_for_pagination()

        page = current_page or Paginator.resolve_current_page()
        per_page = per_page or self._model.get_per_page()
        self._query.for_page(page, per_page)

        return LengthAwarePaginator(self.get(columns).all(), total, per_page, page)
Paginate the given query.

        :param per_page: The number of records per page
        :type per_page: int

        :param current_page: The current page of results
        :type current_page: int

        :param columns: The columns to return
        :type columns: list

        :return: The paginator