相关知识及文档
- http://laravel.so/tricks/0ce4f22eff598f88a31db92d1a3aa3d3为什么你应该使用 Repository
- http://laravelacademy.org/post/3063.html在 Laravel 5 中使用 Repository 模式实现业务逻辑和数据访问的分离
安装
- composer require prettus/l5-repository, 文档:https://github.com/andersao/l5-repository,用途:自动生成相应组件
- composer require league/fractal, 文档:https://packagist.org/packages/league/fractal,用途:格式化输出json数据组件
配置
- 编辑config/repository.php,配置对应参数
- 生成repository:php artisan make:repository Member。此操作会生成三个文件:
- 模型:Models/Member.php
- 数据迁移文件:database/migrations/2017_01_11_170441_create_posts_table.php
- 仓库接口文件:Repositories/MemberRepository.php
- 仓库实体文件:Repositories/MemberRepositoryEloquent.php
- 使用模型
public function model() { return Member::class; }
- 使用验证器
public function validator() { return MemberValidator::class; }
- 使用输出格式化
public function presenter() { return MemberPresenter::class; }
- 使用模型
- 生成validator:php artisan make:validator Member。模型验证器,生成一个文件:
- Validators/MemberValidator.php,仓库在调用创建或更新时会调用此验证规则。
- 生成transformer:php artisan make:transformer Member。模型输出格式化。(可选操作,在生成presenter时,会提示是否一起生成)
- Transformers/MemberTransformer.php,仓库调用数据时会自动根据此格式输出。
- 生成输出:php artisan make:presenter Member。生成输出器,仓库实体里使用,
- Presenters/MemberPresenter.php。
- 此操作会提示是否生成transformer。
public function getTransformer() { return new MemberTransformer(); }
- 绑定容器:php artisan make:bindings Member。生成绑定关系
- 首次绑定会生成:Providers/RepositoryServiceProvider.php,将此文件添加至app.php。
- 后续绑定会添加接口与实现的类绑定关系。用于依赖注入。
测试&使用
- 创建控制器:php artisan make:controller MemberController --resource。此命令会生成RESTfull controller,包含默认的action
- 添加路由。
- Model指定相应可保存字段。