adityadarma / laravel-service-repository
Create pattern service and repository with easy
1.1.8
2024-05-18 15:54 UTC
Requires
- php: ^8.0
- laravel/framework: ^9.0|^10.0|^11.0
README
Requirement
- Minimum PHP ^8.0
- Laravel ^9.x
Installation
You can install the package via composer for latest version
composer require adityadarma/laravel-service-repository
Install the base service part of core base service:
php artisan service-repository:install
Usage
*Service
Create service
php artisan make:service nameService
Used on controller
protected NameService $nameService; public function __construct( NameService $nameService ) { $this->nameService = $nameService; } public function data() { $this->nameService->functionName()->getData(); } public function json(Request $request) { $this->nameService->functionName()->toJson(); } public function withResource(Request $request) { $this->nameService->functionName()->toJsonFromResource(ClassResource::class); }
Use Service & Exception
Every all exception, must have handle to class CustomException
public function nameMethod() { try { ......... if (false) { throw new CustomException('Error exception'); } .......... // Call toJsonFromResource at controller return $this->setData($data) ->setMessage('Message data') ->setCode(200); // OR // Call toJson at controller return $this->setData($data) ->setResource(ClassResource::class) ->setMessage('Message data') ->setCode(200); } catch (Exception $e) { return $this->exceptionResponse($e); } }
*Repository
Create repository
php artisan make:repository nameRepository --model
- --model will create repository with construct model
You can use general function on trait "GeneralFunctionRepository".
Used on service
protected NameRepository $nameRepository; public function __construct( NameRepository $nameRepository ) { $this->nameRepository = $nameRepository; } public function data() { $this->nameRepository->functionName(); }
*Request
php artisan make:request nameRequest --single
- --single will make all method to single file request (store, update, delete)
Command request is customized, have failedValidation to consistent API response. I also added an argument, so that we can carry out validation in one FormRequest file. Add function messages to custom response attribute message
*Model
php artisan make:model name --trait --repository
- --trait will file trait to use on model like accessor, mutator, relationship and scope
- --repository will create file repository with construct model
Command model is customized, we add 2 argument type. You can separate it into traits (accessor, mutator, relationship and scope) and add file repository.
License
This Package is licensed under the MIT license. Enjoy!