chamber-orchestra/pagination-bundle
Pagination/ and Paginator/ classes are framework-agnostic and could be ported to Laravel with minimal changes (e.g., replacing Symfony’s QueryBuilder with Laravel’s Builder).doctrine/orm), integration is straightforward. For native Eloquent, a custom adapter would be needed to bridge Doctrine’s QueryBuilder to Eloquent’s query builder.ramsey/uuid or ulid/php-ulid package for cursor generation. Laravel’s spatie/laravel-activitylog or custom ULID utilities could integrate here.twigbridge/twig-bridge) used for compatibility.OptionsResolver, DependencyInjection, and Twig introduces abstraction overhead. Mitigation: Use Symfony’s standalone components (e.g., symfony/options-resolver) or rewrite dependencies in Laravel-compatible code.created_at + id for keyset pagination) and client-side cursor handling. Laravel’s cursor package could conflict or require unification.created_at + id). Benchmark against Laravel’s native pagination.PaginationInterface) and wrap Symfony-specific code in Laravel-compatible adapters?laravel/framework’s Cursor facade)? If so, how will this bundle’s implementation coexist or replace it?OptionsResolver be mapped to Laravel’s config files or service providers?options-resolver, http-foundation) to avoid full Symfony dependency.Twig with Blade via a custom adapter or twig-bridge.Pagination.php, Paginator.php) to use Laravel’s Builder, Collection, and Cursor interfaces.Doctrine\ORM\QueryBuilder with Illuminate\Database\Query\Builder.ContainerInterface with Laravel’s Container).PaginationServiceProvider) to register bundle services.DoctrineQueryPaginator or use native Laravel queries.// Instead of:
$paginator = new DoctrineQueryPaginator($queryBuilder);
// Use:
$paginator = new EloquentQueryPaginator($eloquentQuery);
twig-bridge for dual support.resources/views/vendor/pagination/
spatie/laravel-ulid).created_at index).symfony/options-resolver (v6.x).laravel/framework’s LengthAwarePaginator, decide whether to replace or extend it.Cursor.symfony/options-resolver vs. Laravel’s illuminate/support). Pin versions strictly.dd() or Xdebug for stack traces.created_at + id columns.with() in Eloquent).total, per_page) but avoid caching cursor results (stale data risk).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Cursor timeout | Stale cursors return empty results | Implement cursor TTL (e.g., 5-minute expiry) |
| ULID collision | Duplicate cursors | Use created_at + id composite keys |
| Symfony dependency conflict | Breaks |
How can I help you explore Laravel packages today?