madulinux / repository
Laravel repository pattern
Installs: 21 270
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: ^7.3|^8.0
- illuminate/config: >=6.20.26
- illuminate/console: >=6.20.26
- illuminate/database: >=6.20.26
- illuminate/filesystem: >=6.20.26
- illuminate/support: >=6.20.26
README
laravel simple repository pattern generator.
Installation
install using composer
composer require "madulinux/repository"
Check if command make:repository already load
php artisan list
if not listed, run autoload
composer dump-autoload
Publish file config file
php artisan vendor:publish --tag="repositories"
add this provider class to your config/app.php
'providers' => [
...
App\Providers\CustomEloquentProvider::class,
...
Usage
Repository
To generate a repository for User model, use the following command
php artisan make:repository User
To generate a repository with a specific model
php artisan make:repository Foo --model=Bar
Repository Class
<?php namespace App\Repositories\Eloquent; use App\Models\User; use Madulinux\Repositories\Eloquent\BaseRepository as Repository; use App\Repositories\UserRepositoryInterface; /** * Class UserRepository * @package App\Repositories\Eloquent */ class UserRepository extends Repository implements UserRepositoryInterface { /** * @return string */ public function model() { return User::class; } }
Interface Class
<?php namespace App\Repositories; use Madulinux\Repositories\BaseRepositoryInterface as Repository; /** * Class UserRepositoryInterface * @package App\Repositories */ interface UserRepositoryInterface extends Repository { // }
Criteria
To generate a new global criteria, use the following command
php artisan make:criteria UserAccess
To generate a createria for a specific model
php artisan make:criteria SeventeenYearsOld --model=Profile
<?php namespace App\Repositories\Criteria\Profiles; use Madulinux\Repositories\Criteria\Criteria; use Madulinux\Repositories\BaseRepositoryInterface as Repository; /** * Class SeventeenYearsOld * * @package App\Repositories\Criteria\Profiles */ class SeventeenYearsOld extends Criteria { /** * @param $model * @param Repository $repository * * @return mixed */ public function apply($model, Repository $repository) { return $model; } }
License
The contents of this repository is released under the MIT licence