omnicode /lara-service
CRUD 服务层
4.0.1
2018-10-14 17:04 UTC
Requires
- laravel/framework: 5.7.*
- omnicode/lara-repo: ~4.0
- omnicode/lara-support: ~4.0
Requires (Dev)
- mockery/mockery: ~1.0
- php-mock/php-mock: 1.0.1
- phpunit/phpunit: ~7.0
Suggests
- omnicode/lara-crud: LaraService integrated with LaraCrud
- omnicode/lara-model: LaraService integrated with LaraModel
- omnicode/lara-repo: LaraService integrated with LaraRepo
README
Lara-Service
通用服务层
安装
从您的终端运行以下命令
composer require "omnicode/lara-service: 2.0.*"
或者将此添加到您的 composer.json 文件的 require 部分
"omnicode/lara-service": "2.0.*"
然后运行 composer update
使用方法
首先,创建您的 Service 类,如下所示的示例 AcccountService
<?php namespace App\Services; use App\Repositories\Contracts\AccountRepositoryInterface as AccountRepository; use App\Validators\AccountValidator; use LaraService\Services\LaraService; class AccountService extends LaraService { public function __construct(AccountRepository $accountRepository, AccountValidator $accountValidator) { $this->baseRepository = $accountRepository; $this->baseValidator = $accountValidator; } }
Repository 和 Validator 类应该具有以下方法 pushCriteria, saveAssociated, findForShow, findFillable, getKeyName, destroy, getIndexableColumns, paginate, setSortingOptions
和 isValid, getErrors
分别。这些已在 Lara Validation 和 Lara Repository 包中实现。
最后,在控制器中使用服务
<?php namespace App\Http\Controllers; use App\Services\AccountService; class AccountsController extends Controller { public function __construct(AccountService $accountService) { parent::__construct(); $this->baseService = $accountService; } }
可用方法
以下方法在 LaraService 中可用
LaraRepo\Contracts\RepositoryInterface
public function setBaseRepository(RepositoryInterface $repository) public function getBaseRepository() public function setBaseValidator($validator) public function getBaseValidator () public function setValidationErrors($errors) public function getValidationErrors() public function paginate($sort = [], $group = self::GROUP) public function create($data) public function createWithRelations($data, $relations = null) public function findForShow($id, $columns = null) public function find($id) public function update($id, $data) public function updateWithRelations($id, $data, $relations = null) public function destroy($id) public function validate($validator, $data, $options = []) public function paginateRepositoryWhere($repository, $group = self::GROUP, $column = null, $val = null) public function paginateRepository($repository, $group = self::GROUP) public function setSortingOptions($repository, $options = [], $group = self::GROUP) }
示例 - 创建一个新的账户仓库
// for index page use // returns item list and columns with their columns information $this->accountService->paginate() // if you want to sort your index page use $this->accountService->setSortingOptions($repository) // to create new record $this->accountService->create($request->all()); // returns validation errors of last operation $this->accountService->getValidationErrors(); // to save items with relations $this->accountService->createWithRelations($data, $relations) // to find based on $showable attributes $this->accountService->findForShow($id) // usual find with fillable columns $this->accountService->find($id) // to update based on primary key $this->accountService->update($id, $data) // to update and item with relations $this->accountService->updateWithRelations($id, $data, $relations) // to delelte $this->accountService->destroy($id) // to validate the data (internally uses the injected Validator) $this->accountService->validate($validator, $data, $options = [])