nalingia / laravel-repositories
A Laravel package for the Repository Design Pattern.
Installs: 4 223
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/nalingia/laravel-repositories
Requires
- php: ^7.2
- illuminate/filesystem: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|~6.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|~6.0
- lstrojny/functional-php: ^1.9
Requires (Dev)
- orchestra/testbench: ~3.8.0
- phpunit/phpunit: ^8.0
README
Repositories is a simple package to simplify the creation of scaffolding code when using the Repository Design Pattern. It adds an artisan command which creates the repository and the related contract.
Installation
You can install the package via composer:
composer require nalingia/laravel-repositories
Then you have to add the related Service Provider to the providers configuration array in config/app.php:
'providers' => [ ... Nalingia\Repositories\RepositoriesServiceProvider::class, ... ]
Usage
The package provides an additional artisan command called make:repository which accepts as only parameter the model's class name.
For instance, if you need to create a repository of users you can type:
php artisan make:repository User
The command will create both the repository and the related contract in app/Repositories and app/Repositories/Contracts folders, respectively.
Default folders and namespaces can be changed
Available API
The generated repositories will inherit from Nalingia\Repositories\AbstractEloquentRepository which provides a bunch of useful and general purpose methods:
- Get all models:
public function all(array $with = []);
- Get model having the given id:
public function findById($id, array $with = [], $fail = true);
- Get the first model having
$keyattribute equals to$value:
public function getFirstBy($key, $value, array $with = [], $comparator = '=', $fail = false);
- Get all models having
$keyattribute equals to$value:
public function getManyBy($key, $value, array $with = [], $comparator = '=');
- Get first model matching
$whereclauses:
public function getFirstWhere(array $where, $with = [], $fail = false);
- Get all models matching
$whereclauses:
public function getAllWhere($where, $with = [], $columns = ['*']);
- Get paginated models:
public function getByPage($page = 1, $limit = 10, array $with = []);
- Create a new model:
public function create(array $data);
- Update a model:
public function update($model, array $data);
- Delete a model:
public function delete($model);
- Truncate the table related to the model:
public function truncate();
- Get all models having
column_namein$needles:
public function getAllWhereColumnNameIn(array $needles, array $with = []);
You can contribute to the common methods by proposing a pull request.
Settings
If you need to change the default command settings, you can publish the repositories.php configuration file using the command:
php artisan vendor:publish --provider="Nalingia\Repositories\RepositoriesServiceProvider"
Change log
Please, see CHANGELOG for more information about what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Testing
You can run the tests with:
composer test
or
vendor/bin/phpunit
License
The MIT License (MIT). Please see License File for more information.