Skip to content

omatech/lars

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Repository System

LARS abstract the data layer, making it easy to maintain.

Latest Version on Packagist Total Downloads

Installation

You can install the package via composer:

composer require omatech/lars

Usage

Create your own repository class extending BaseRepository class, use the model function to set the eloquent model for the repository.

class Repository extends BaseRepository
{
    public function model() : String
    {
        return Model::class;
    }
}

Now you can create your own function using query builder easily.

public function method()
{
    return $this->query()
                ->get();
}

Criterias

Create a criteria implementing the interface CriteriaInterface. With the apply function you can filter by your own criteria.

public class Criteria implements CriteriaInterface
{
    public function apply(Builder $q) : Builder
    {
        return $q->where('role', 'admin');
    }
}

Use your criteria

public function method()
{
    return $this->pushCriteria(new FooCriteria)
                ->query()
                ->get();
}

List applied criterias

public function method()
{
    return $this->getCriterias();
}

Remove an applied criteria

public function method()
{
    return $this->pushCriteria(new FooCriteria)
                ->popCriteria(new FooCriteria)
                ->query()
                ->get();
}

Remove all applied criterias

public function method()
{
    return $this->pushCriteria(new FooCriteria)
                ->pushCriteria(new BarCriteria)
                ->resetCriteria()
                ->query()
                ->get();
}

Global criterias for all methods in repository

It is possible to apply a criteria to all methods using the construct method of the repository.

public function __construct()
{
    $this->pushCriteria(new FooCriteria);
}

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.