omatech / lars
Installs: 4 810
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: ^7.1|^7.2|^7.3|^7.4|^8.0
- illuminate/support: 5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
This package is auto-updated.
Last update: 2024-10-24 14:51:30 UTC
README
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.