- Minimum PHP ^8.0
- Laravel ^9.x
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
php artisan make:service nameService
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);
}
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);
}
}
php artisan make:repository nameRepository --model
- --model will create repository with construct model
You can use general function on trait "GeneralFunctionRepository".
protected NameRepository $nameRepository;
public function __construct(
NameRepository $nameRepository
)
{
$this->nameRepository = $nameRepository;
}
public function data()
{
$this->nameRepository->functionName();
}
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
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.
This Package is licensed under the MIT license. Enjoy!