michalwolinski/repository

Repository Pattern implementation for Laravel.

v1.1.1 2020-11-07 14:10 UTC

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

  1. 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

License

This project is licensed under the MIT License.