michalwolinski / repository
Repository Pattern implementation for Laravel.
v1.1.1
2020-11-07 14:10 UTC
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: 2024-06-07 21:49:28 UTC
README
Repository Pattern implementation for Laravel. Criteria are based on Filter Design Pattern.
Installation by Composer
- Run
composer require michalwolinski/repository
in 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.