omatech/lars
Laravel Repository System
LARS abstract the data layer, making it easy to maintain.
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 cbohollo@omatech.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
Related Packages
Enigma is a ciphersweet wrapper for laravel, it gives us the possibility to sear...
Quick way to save jobs that have been created without any problem. The antithesi...
laravel-paypalpayment is simple package help you process direct credit card paym...
Powerful PHP database abstraction layer (DBAL) with many features for database s...