artesaos/warehouse
Warehouse V2 is a Laravel repository-pattern demo/package that centralizes queries and business rules while still returning Eloquent models and Collections. Use it as a ready-to-use repository layer without giving up Eloquent’s practicality.
app()->make() → app(), query builder syntax changes).WarehouseServiceProvider), which may conflict with Laravel’s autoloading or modern service container bindings.newQuery() implementation) may fail in newer Laravel versions.getAll()).RepositoryInterface + BaseRepository trait).UserRepository, ProductRepository).class UserRepository extends BaseRepository {
protected $modelClass = \App\Models\User::class;
}
newQuery() if Laravel’s query builder behavior differs:
protected function newQuery() {
return $this->modelClass::query(); // Laravel 8+ syntax
}
app()->make() with Laravel’s container:
protected function newQuery() {
return app($this->modelClass)->newQuery();
}
array (per 3.0-alpha1) may require custom serialization logic.| Phase | Tasks | Dependencies |
|---|---|---|
| Pre-Integration | Compatibility testing, risk assessment, stakeholder alignment. | Dev team, QA. |
| Pilot | Implement 1–2 repositories, validate queries, performance. | Existing Eloquent models. |
| Core Migration | Refactor controllers/services to use repositories. | Pilot success. |
| Fractal/Transformers | Replace Fractal with modern alternatives (if used). | API layer requirements. |
| Cleanup | Deprecate old query logic, update documentation. | Full migration complete. |
getAll(), findByID(), and lists() with Laravel 10’s Eloquent.newQuery() works with query scopes, global scopes, and model events.doQuery() handles pagination (e.g., SimplePaginator vs. LengthAwarePaginator).with()) in repository methods.lists() calls).getAll() with paginate = true may hit database limits for large datasets.remember() or Redis) in repositories.How can I help you explore Laravel packages today?