Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Paginator Laravel Package

ecommit/paginator

Lightweight PHP paginator for arrays or ArrayIterator. Configure page, max_per_page, and data; optionally provide total count for large datasets. Iterate results, get last page, and use count() to know items on the current page.

View on GitHub
Deep Wiki
Context7

At a glance

Frequently asked questions about Paginator
Can I use this paginator for Laravel API responses instead of Eloquent’s paginate()?
Yes, this is a perfect fit for API responses when working with in-memory arrays or collections. You can manually construct pagination metadata (e.g., total items, current page) and return it alongside your data, similar to Laravel’s `LengthAwarePaginator` but without database dependencies. Example: `return response()->json(['data' => iterator_to_array($paginator), 'meta' => [...]])`.
How do I handle large datasets efficiently without loading everything into memory?
Use the `count` option to precompute the total item count. Pass only the current page’s data to the `data` parameter, and set `count` to the total number of items. This avoids calling `count($largeArray)` on every request, which is slow for datasets with >10,000 items. Example: `$paginator = new ArrayPaginator(['data' => $currentPageData, 'count' => $totalItems, ...])`.
Does this work with Laravel’s Blade pagination views (e.g., bootstrap or tailwind)?
No, this paginator is not compatible with Laravel’s built-in pagination views. It’s designed for manual rendering or API responses. If you need Blade views, use Laravel’s `LengthAwarePaginator` or manually generate HTML links using the `getLastPage()` and current page methods. For APIs, return pagination metadata as JSON instead.
What Laravel versions does this package support, and are there any dependencies?
This package has no Laravel-specific dependencies and works with any PHP 7.4+ project. It’s framework-agnostic but integrates seamlessly with Laravel’s arrays, collections, or iterators. Tested with Laravel 8/9/10, but since it’s standalone, it won’t conflict with Laravel’s core pagination system. Always check the [GitHub repo](https://github.com/e-commit/paginator) for updates.
How do I add pagination to a client-side infinite scroll feature (e.g., React/Vue fetching data)?
This paginator is ideal for client-side pagination. Initialize it with the current page and max items per page, then return only the current page’s data (e.g., via `iterator_to_array($paginator)`). Include metadata like `total`, `current_page`, and `last_page` in your API response. The frontend can then fetch the next page by incrementing the `page` parameter. Example: `?page=2`.
Can I use this for database pagination like `Model::paginate()`?
No, this paginator is designed for in-memory arrays or iterators, not database queries. For database pagination, use Laravel’s built-in `paginate()` or `cursor()` methods. This package is optimized for scenarios like paginating Elasticsearch results, cached data, or API responses where you already have the full dataset loaded.
How do I generate pagination URLs (e.g., `?page=2`) manually for this paginator?
This paginator doesn’t include URL generation. You’ll need to handle it manually using Laravel’s `Request` facade or a router. For example, construct URLs like `/api/items?page=2` using the current page and `getLastPage()` method. If you need reusable logic, wrap it in a helper or service class. Example: `url()->current() . '?page=' . $paginator->getCurrentPage()`.
Is this package actively maintained? How can I contribute or report issues?
The package has a [GitHub repository](https://github.com/e-commit/paginator) with a workflow badge for tests, but maintenance activity isn’t heavily documented. You can open issues or pull requests directly on GitHub. The MIT license also allows forking and customization if needed. Check the `README` or `CONTRIBUTING.md` for guidelines, though coverage may be limited.
What’s the performance impact of using this vs. Laravel’s built-in paginator for small datasets?
For small datasets (<1,000 items), the performance difference is negligible. This paginator is lightweight (~35 lines of core logic) and avoids Laravel’s built-in overhead. However, if you’re using `count($data)` without precomputing totals, it will be slower for large arrays. For tiny datasets, either solution works fine—choose based on whether you need Laravel’s built-in features (e.g., views, URL generation).
Can I integrate this with Laravel’s API resources (e.g., `JsonResource`)?
Not directly, as this paginator doesn’t extend Laravel’s `LengthAwarePaginator`. To use it with API resources, manually map the paginated data to a `LengthAwarePaginator` or return the raw data alongside metadata. Example: `return new PaginatedResource($paginator->getCurrentPageData(), new LengthAwarePaginator([], 0, $perPage, $paginator->getLastPage(), $paginator->getCurrentPage()))`.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor
spatie/laravel-javascript-views