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
        :rtype: LengthAwarePaginator

def paginate(self, per_page=15, 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
        :rtype: LengthAwarePaginator
        """
        if columns is None:
            columns = ["*"]

        page = current_page or Paginator.resolve_current_page()

        total = self.get_count_for_pagination()

        results = self.for_page(page, per_page).get(columns)

        return LengthAwarePaginator(results, total, per_page, page)