budgetdumpster / crud-service
不依赖于Eloquent模型的CRUD服务
1.1.0
2018-05-22 18:41 UTC
Requires
- illuminate/database: ^5.5
- illuminate/events: ^5.5
- monolog/monolog: ^1.23
Requires (Dev)
- phpunit/phpunit: ^6.4
README
安装
composer require budgetdumpster/crud-service:dev-master
测试
此软件包包含完整的测试套件,可以通过在软件包根目录中执行命令 phpunit
来运行该测试套件。
用法
该 CrudService
软件包旨在与 Eloquent 模型(Laravel)一起使用,并创建了一个通用的服务,允许您在数据和管理模型上执行 CRUD 操作。
检索单个模型
<?php use \BudgetDumpster\Services\CRUDService; use \BudgetDumpster\Exceptions\ModelNotFoundException; use \YourNameSpace\Models\Person; use \Monolog\Logger; $id = 'abcdef123456789'; $logger = new Logger('test'); // continue configuring monolog $crudService = new CRUDService($logger); $person = new Person(); try { model = $crudService->retrieve($person, $id); } catch (ModelNotFoundException $e) { // log the error }
这是通过 ID 检索单个模型的基本用例,存在一种内置的 预加载
关系的方法,即通过在模型上提供一个名为 relationNames
的公共属性来实现。关系名称只是与模型中关系方法名称匹配的字符串。可以通过引用该属性以常规方式加载关系,当需要预加载关系时,才发挥作用。
创建单个模型
<?php use \BudgetDumpster\Services\CRUDService; use \BudgetDumpster\Exceptions\ModelNotFoundException; use \YourNameSpace\Models\Person; use \Monolog\Logger; use \RuntimeException; $data = [ 'first_name' => 'Test', 'last_name' => 'Person', 'phone' => '555-555-5555', 'email' => 'test@test.com' ]; $logger = new Logger('test'); //continue configuring logger $crudService = new CrudService($logger); $person = new Person(); $id = 'abcdef123456789'; try { $model = $crudService->create($person, $data, $id); } catch (RuntimeException $e) { // log error }
更新单个模型
<?php use \BudgetDumpster\Services\CRUDService; use \BudgetDumpster\Exceptions\ModelNotFoundException; use \YourNameSpace\Models\Person; use \Monolog\Logger; use \RuntimeException; $data = [ 'first_name' => 'Test', 'last_name' => 'Person', 'phone' => '555-555-5554', 'email' => 'test@test.com' ]; $logger = new Logger('test'); // continue configuring logger $crudService = new CRUDService($logger); $person = new Person; $id = '123456789abcdef'; try { $model = $crudService->update($person, $data, $id); } catch (ModelNotFoundException $e) { // log error } catch (RuntimeException $e) { // log error }
删除单个模型
<?php use \BudgetDumpster\Services\CRUDService; use \BudgetDumpster\Exceptions\ModelNotFoundException; use \YourNameSpace\Models\Person; use \Monolog\Logger; use \RuntimeException; $logger = new Logger('test'); // continue configuring logger $crudService = new CRUDService($logger); $person = new Person; $id = '123456789abcdef'; try { // returns a boolean value to identify whether the method call was successful $result = $crudService->delete($person, $id); } catch (ModelNotFoundException $e) { // log error } catch (RuntimeException $e) { // log error }
检索模型集合
<?php use \BudgetDumpster\Services\CRUDService; use \BudgetDumpster\Exceptions\ModelNotFoundException; use \YourNameSpace\Models\Person; use \Monolog\Logger; use \RuntimeException; use \InvalidArgumentException; $logger = new Logger('test'); // continue configuring logger $crudService = new CRUDService($logger); $person = new Person; $page = 1; $per_page = 1; // optional parameter - defaults to id != null $filter = ['field' => 'first_name', 'operator' => '=', 'value' => 'Test']; try { $collection = $crudService->retrieveAll($person, $page, $per_page, $filter); } catch (InvalidArgumentException $e) { // log error } catch (RuntimeException $e) { // log error }