laravel 学习-安装 l5-repository 依赖
MVC 架构 Model, View, Controller
Model
模型不仅包含数据,而且包含数据代表的逻辑。View
View 负责根据 Model 中的数据显示用户界面。Controller
控制器将用户界面和数据模型关联起来,并充当协调运作的角色。它接收各种用户操作,更新数据模型,并用合适的 view 展示结果给用户。
大型网络 Spring
Service 用于标注业务层组件
Controller 用于标注控制层组件
Repository 用于标注数据访问组件
Presenters 用于标注显示逻辑组件Repository 是 MVC 中衔接 Controller 和 Model 之间的一个纽带。从概念上讲,Repository 是把将数据给封装后的集合并提供给 Controller 的操作。
l5-repository 是一个为 laravel5 提供的数据库抽象层,目的是为了将应用的数据库操作和核心的业务逻辑分离开,保证 controller 的精简。
安装
执行以下命令以获取最新版本的软件包:
1 | composer prettus/l5-repository |
在你的 config/app.php 将 Prettus\Repository\Providers\RepositoryServiceProvider::class 添加到 providers 数组的末尾:
1 | 'providers' => [ |
发布资源文件的服务提供者
1 | php artisan vendor:publish --provider 'Prettus\Repository\Providers\RepositoryServiceProvider' |
执行结果
1 | Copied File [/vendor/prettus/l5-repository/src/resources/config/repository.php] To [/config/repository.php] |
在 config/
下,生成一个 repository.php
的配置文件
配置
首先配置存储库文件的存储位置。 默认情况下是 “app” 文件夹和命名空间 “App”。 请注意, paths 数组中的值可以直接用作命名空间和文件路径。
1 | 'generator' => [ |
生成模型所需的一切,请运行以下命令:
1 | php artisan make:entity Article // 有提示,需要生成哪些文件,yes | no |
这将创建 Controller,Validator,Model,Repository,Presenter 和 Transformer 类。 它还将创建一个新的服务提供程序,用于绑定 Eloquent 存储库及其对应的存储库接口。 要加载它,只需将它添加到您的 AppServiceProvider@register 方法:
1 | $this->app->register(RepositoryServiceProvider::class); |
命令
1 | // namespace App\Repositories\Contracts\Blog; |
Criteria
Criteria 是一个让你可以根据具体的或者一系列复杂的条件来向你的 repository 发起查询的方式,你可以将一些可能会在多个接口或者情况下用到的查询条件放到这里,到达复用的目的,而且可以将复杂的查询条件从你的 controller 中抽离出来,精简代码的同时,也使得各部分之间的耦合更加松散
1 |
|
在控制器中使用条件
1 |
|
Transformer
Transformers 的作用是按照接口的需要来包装你从数据库查询出来的结果,你可以在这里方便的设置你需要哪些字段,每一个字段的数据类型,或者你要联查多个表来组成接口所需要的数据时,你可以在这里利用 eloquent 的 relationship 方便的完成
这是一个第三方的包,需要你用 composer 引入composer require league/fractal
1 |
|
在 repository 存储库中设置默认条件
1 |
|
你也可以在 controller 中调用 setTransformer 方法来使用
1 | $this->repository->setTransformer(new ArticleTransformer()); |
跳过存储库中定义的条件
当你在对 repository 使用了 transformer 之后,也许在某些场景下你不希望查询结果自动的被 transform 掉,你可以调用 repository 的 skipTransformer() 方法来跳过转换。
1 | $this->repository->skipCriteria()->all(); |
使用 popCriteria 删除条件
1 | $this->repository->popCriteria(new MyCriteria()); |
缓存
更改文件 config / repository.php 中的缓存设置
1 | 'cache' => [ |
可以直接在存储库中覆盖这些设置
1 |
|
参考学习
ROR
laravel 学习-安装 entrust 和 l5-repository 2 个基本依赖
laravel 提供的简单强大的 repository