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...
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v1.0.6 | ^7.1| | 5.8.*| | MIT | |
| v1.0.5 | ^7.1| | 5.8.*| | MIT | |
| v1.0.4 | ^7.1| | 5.8.*| | MIT | |
| v1.0.3 | ^7.1| | 5.8.*| | MIT | |
| v1.0.2 | ^7.1| | 5.8.*| | MIT | |
| v1.0.1 | ^7.1| | 5.8.*| | MIT | |
| v1.0.0 | ^7.1 | 5.8.* | MIT |
Pre-releases (1)
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v0.0.1-alpha | ^7.1 | 5.8.* | MIT |