h-farm/laravel-searchable
Laravel Searchable by h-farm adds simple, driver-based full-text search to Eloquent models, letting you index records and run clean, reusable search queries with minimal setup in Laravel applications.
Package: maize-tech/laravel-searchable — trait-based search/indexing layer for Eloquent models, with pluggable search drivers (database-backed and collection-backed) and model-event-driven index synchronisation.
What 4.2.0 actually changes: One functional change — Laravel 13 support (PR #47). The remaining three entries are Dependabot bumps to GitHub Actions used in CI (stefanzweifel/git-auto-commit-action 5→6, aglipanci/laravel-pint-action 2.5→2.6, dependabot/fetch-metadata 2.4.0→2.5.0). No runtime dependency changes, no API changes, no deprecations, no security advisories.
Architecture fit: Reasonable where search requirements are modest and the team wants to avoid operating Elasticsearch/Meilisearch/Algolia. It keeps search inside the Laravel/Eloquent mental model and inside the existing database, which suits small-to-mid datasets (roughly low millions of rows, read-heavy) and internal tooling. It is not a fit where we need relevance ranking, faceting, fuzzy matching, typo tolerance, or multilingual analysis — those require a real search engine, and retrofitting one later means replacing the driver layer and re-indexing.
Integration feasibility: Low friction by design. Adoption is a trait on the model plus driver configuration; no separate service to provision, no new infrastructure, no network hop. A focused spike should be feasible in a day or two, with the real effort in schema/index design and backfill rather than in the package itself.
Technical risk:
maize-tech), effectively single-maintainer release history. Bus-factor risk is the dominant long-term concern, not code quality. We should assume we may need to fork.illuminate/* constraints in composer.json. That is good for forward compatibility but increases the number of untested framework combinations our lockfile could resolve to. Pin explicitly.upsert/insert, raw SQL, queue workers with withoutEvents, and soft-delete semantics are classic sources of index drift.LIKE-style predicates; unscoped searches on large tables will table-scan and can degrade the primary OLTP path.git-auto-commit-action 5→6) affects the vendor's pipeline, not our application. It should not influence our upgrade decision.Key questions:
Stack fit: Native. It is a Composer package for Laravel with no external services, no daemons, and no extra credentials. It fits an existing deploy pipeline unchanged — the only new operational surface is a data migration and a scheduled reindex job.
Migration path:
illuminate/* and PHP constraints.toSearchableArray().Compatibility: The release is additive for our purposes — semver-minor with no breaking changes declared, so it is a safe forward upgrade from 4.1.x. Backward compatibility to older Laravel versions should be verified from composer.json before we upgrade, since "add Laravel 13 support" often coincides with dropping the oldest supported major.
Sequencing: Do not bundle this with a framework major upgrade. Land the package on our current Laravel first, confirm behaviour, and treat any subsequent Laravel 13 move as a separate, independently verifiable change. That keeps the failure domain small — if search breaks during a framework upgrade, we will not immediately know which of the two moves caused it.
Maintenance: Low ongoing code maintenance — the integration is a trait plus configuration. The real recurring cost is index hygiene: drift detection, reindex runbooks, and schema migrations on the index table. Budget for a periodic reconciliation job and a documented "how to rebuild the index from scratch" procedure that has actually been rehearsed.
Support: Community-supported open source with no commercial SLA. We need an internal owner and a fork contingency; assume we are the escalation path. Upstream responsiveness on issues should be measured during the pilot, not assumed.
Scaling: Scales with the database until it does not. Watch for: index table growth outpacing the source table, search queries competing with transactional load, and LIKE-predicate plans flipping to sequential scans as row counts cross planner thresholds. Define in advance what metric triggers a move to a dedicated search engine — latency SLO breach, index table size, or database CPU attributed to search — so the decision is not made under pressure.
Failure modes:
Ramp-up: Low. A mid-level Laravel developer can be productive in under a day; the trait API is conventional and the driver abstraction is thin. The genuinely non-obvious knowledge is operational, not developmental — when events fire, what suppresses them, and how to safely rebuild. Capture that in a short internal runbook alongside the pilot, and treat it as a deliverable of the integration rather than an afterthought.
How can I help you explore Laravel packages today?