devaction-labs/livewire-filterable
when() clauses and reducing component complexity.#[\NoDiscard], pipe operator |>, #[Scope]) for cleaner, type-safe code—ideal for greenfield projects or teams adopting PHP 8.5.ILIKE), MySQL, and SQLite with auto-adaptation, reducing vendor lock-in.Filterable, LivewireFilterable) and minimal Livewire component changes (public properties auto-bind to filters).ILIKE vs LOWER()), easing migration for teams upgrading from PHP 8.1+.wire:model.live) without custom event listeners or JavaScript.tsvector columns, triggers). MySQL/SQLite users miss out.#[Scope]) improve maintainability but may expose edge cases in legacy codebases.spatie/laravel-query-builder)?Filter::like()->debounce()) align with team coding standards, or will it require wrappers?#[Url] attribute conflict with existing routing (e.g., API-driven filters)?Filterable trait; minimal intrusion into existing queries.wire:model.live bindings.CustomerList).when() clauses with Filter::like().cursor for large datasets, simple for speed).where() logic with fluent filters.ILIKE/LOWER(); PostgreSQL users gain full-text search with schema changes.Filter methods in static classes or traits to isolate changes.Filterable trait to Eloquent models.exact, like) in staging.when() clauses with filterable() in Livewire components.wire:model.live bindings.whereAny, whereAll).cursor vs simple).when() clauses, lowering component maintenance.filterable([...])), easing updates.#[NoDiscard] attributes to catch unused filters (e.g., Filter::like('unused_column')).wire:ignore for problematic inputs.EXPLAIN ANALYZE).when() clauses as a backup during migration.try-catch for database-specific features (e.g., GIN index creation).tsvector columns are updated via triggers.debounce(500) on text inputs.Cache::remember() around filterable()).| Scenario | Impact | Mitigation |
|---|---|---|
| PHP 8.5 upgrade fails | Deployment blocker | Test in CI/CD early; use Docker for consistency. |
| PostgreSQL full-text search broken | Slow queries (fallback to LIKE) |
Validate GIN indexes; use ->useTsVector(). |
| Livewire 4 reactivity issues | Filters not updating | Check wire:model.live bindings; test in isolation. |
| Custom JSON filters fail | Unsupported database drivers | Extend Filter class or use raw where(). |
| Massive relationship loads | N+1 queries | Use ->with() on Filter::relationship(). |
#[\NoDiscard], pipe operator).LOWER() vs PostgreSQL’s ILIKE).Filter::like()->debounce()) vs traditional where().cursor vs simple) and when to useHow can I help you explore Laravel packages today?