michalwolinski / repository
Repository Pattern implementation for Laravel.
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/michalwolinski/repository
Requires
- php: ^7.4
- laravel/framework: ^8.0
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: ^9.0@dev
This package is auto-updated.
Last update: 2025-10-08 00:49:39 UTC
README
Repository Pattern implementation for Laravel. Criteria are based on Filter Design Pattern.
Installation by Composer
- Run
composer require michalwolinski/repositoryin console to install this library.
Usage
I propose to use Dependency Injection to inject Repository interface.
Example implementation in service class:
use MichalWolinski\Repository\Criteria\OrderBy; use MichalWolinski\Repository\Criteria\Status; use MichalWolinski\Repository\Interfaces\Repository; use App\User; class Service { private Repository $repository; public function __construct(Repository $repository, User $user) { $this->repository = $repository->getInstance($user); } public function getAllUsers(): void { $allUsers = $this->repository->getAll(); } public function getUserById(int $id): void { $user = $this->repository->get($id); } public function getUserByIds(array $ids): void { $users = $this->repository->getMany($ids); } public function getGmailUsers(): void { $users = $this->repository->getWhere('email', 'LIKE', '%@gmail.com'); } public function getByCriteria(): void { $criteria = [ new Status('Active'), new OrderBy('created_at') ]; $users = $this->repository->getByCriteria($criteria); } }
Authors
- Michal Wolinski - Haxmedia
License
This project is licensed under the MIT License.