jooservices / laravel-repository
Base repositories with CRUD, filtering, ordering and query-from-request for Laravel
1.0.0
2026-03-09 02:07 UTC
Requires
- php: ^8.5
- illuminate/contracts: ^12.0
- illuminate/database: ^12.0
- illuminate/http: ^12.0
- illuminate/support: ^12.0
Requires (Dev)
- laravel/pint: ^1.0
- orchestra/testbench: ^10.0
- phpmd/phpmd: ^2.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.0
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2026-03-09 02:15:03 UTC
README
Base repositories with CRUD, filtering, ordering, and query-from-request for Laravel 12. Built with SOLID, KISS, DRY, and YAGNI. Use only the traits you need.
Requirements
- PHP ^8.5
- Laravel ^12.0
- illuminate/contracts, illuminate/database, illuminate/support, illuminate/http ^12.0
Installation
composer require jooservices/laravel-repository
The package registers its service provider automatically. Optionally publish config:
php artisan vendor:publish --tag=laravel-repository-config
Documentation
Full documentation lives in the ./docs folder:
| Document | Description |
|---|---|
| Architecture | Package structure, layers, interfaces, and design principles |
| Process & logic flow | Data and request flow with diagrams (including Mermaid) |
| Usage guide | Installation, configuration, trait selection, CRUD, filter/order, query-from-request, and testing |
Quick links from the docs:
- Trait-based composition — which traits to use for which needs
- Creating a repository
- CRUD · Filter and order · Query from request
- Testing and quality
Quick example
use Jooservices\LaravelRepository\Contracts\RepositoryInterface; use Jooservices\LaravelRepository\Repositories\EloquentRepository; use Jooservices\LaravelRepository\Traits\HasCrud; use Jooservices\LaravelRepository\Traits\HasFilter; use Jooservices\LaravelRepository\Traits\HasOrder; class UserRepository extends EloquentRepository implements RepositoryInterface { use HasCrud, HasFilter, HasOrder; public function __construct(User $model) { parent::__construct($model); } }
$user = $repo->find($id); $users = $repo->filter(['status' => 'active'])->orderBy(['created_at' => 'desc'])->paginate(15); $users = $repo->fromRequest($request)->paginate(15); // with HasRequestQuery
Changelog
See CHANGELOG.md for version history.
License
MIT.