vigstudio/laravel-eloquent-query-cache
Add query-level caching back to Eloquent with a simple remember-like API. Cache results from database queries, reduce repeated hits, and integrate with Laravel’s cache stores for faster reads and configurable invalidation.
Cache facade, Cache::remember). It leverages Laravel’s built-in caching drivers (Redis, Memcached, file, etc.), ensuring consistency with the ecosystem.QueryCache::enable()). Compatible with Laravel 8+ (inferred from release date).User::all()) or per-query basis. Can be selectively applied via traits or middleware.Cache::forget()). Requires discipline to avoid stale data if not integrated with event listeners (e.g., Model::saved()).whereRaw, dynamic scopes) predictably. Could require custom cache keys or exclusion logic.model:class:query_hash vs. simple model methods).eloquent.updated)?->remember()) or replace them?enable() method selectively via feature flags.eloquent:{model}:{method}:{query_hash}).->fresh() or dynamic conditions).User::saved(fn () => Cache::forget('eloquent:User:all'));
spatie/laravel-query-builder). Audit dependencies.QueryCache::enable(function ($query) {
logger()->debug('Cached query', ['query' => $query->toSql()]);
});
Cache::getStore() can inspect cached queries.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Cache driver failure | All cached queries return stale data | Fallback to uncached queries or graceful degradation. |
| Cache key collisions | Overwritten caches or memory leaks | Use unique, deterministic key generation. |
| Stale cache served | Users see outdated data | Implement cache validation (e.g., Cache::has() + Model::exists()). |
| Cache invalidation missed | Inconsistent data across requests | Use event listeners or transactional invalidation. |
| Package incompatibility | Breaks queries or performance | Test in staging; have rollback plan. |
Cache::getStats()).How can I help you explore Laravel packages today?