laravel-repository
清晰的目录结构
Models 只负责定义模型
(如:模型关联,scope,get和set attribute等)
Repository负责处理这个表 相关的所有业务逻辑
, 不只是注入model, 相关的 redis 任何cache都可以注入,代码定位迅速
Controllers 只负责处理简单的逻辑,获取转发数据,它应该是 简洁干净
的
-
App
-
Http
-
Controller
-
Admin
- IndexController
- UserController
- ConfigController
- ...
-
-
Request(所有的request验证类)
-
Admin
-
Index
- StoreRequest
- UpdateRequest
- DestroyRequest
-
User
- ...
-
Config
- ...
- Request.php
-
-
-
-
Models (所有的model模型)
-
User(用户相关的所有模型)
- User.php
- UserExt.php
- UserMessage.php
-
Config
- Config.php
- ...
- BaseModel.php
-
-
Repositories (目录结构应与model一致,结构清晰)
-
User(用户相关的所有仓库)
- UserRepository.php
- UserExtRepository.php
- UserMessageRepository.php
- ...
-
-
安装并使用
composer require littlebug/laravel-repository mkdir app/Http/Requests # 创建属于你自己的Request验证基类 # 就像下面这个文件
关于一键生成代码
# 在将命令注入到你的 laravel 项目以后 # 输入 php artisan list # 如果你看到下面这些提示,那么可以开始快速生成代码了!~ core core:controller 生成 Controller {--table=} 指定表名称 [ 指定该参数会通过表生成视图文件 ] {--name=} 指定名称 可以带命名空间 [ --name=Home/IndexController 或者 Home\\IndexController ] {--r=} 指定 Repository 需要从 Repositories 目录开始; 默认使用控制器同名 Repository {--request=} 指定 request 目录; 需要从 Requests 目录开始; 默认使用控制器命名空间 {--pk=} 指定主键名称,默认id core:generate 生成 controller|model|repository|request|views {--table=} 指定表名称 [ 支持指定数据库,例如:log.crontabs ] {--path=} 指定目录 [ 没有传递绝对路径,否则使用相对对路径 从 app/Models 开始 ] {--model=} model名称 默认生成使用表名称生成 core:model
# 让我们来试一下 # 在commands帮助文档的提示下生成代码 # 如果你的项目用到了数据库前缀,不要忘了去database.php中添加,否则会找不到table # 举个栗子,以member_message表为例 php artisan core:generate --table=member_message --path=Member --controller=Member/MemberMessageController # 在终端中你可以看到下面的结果 文件 [ /Users/wanchao/www/lara-test/app/Models/Member/MemberMessage.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Repositories/Member/MemberMessageRepository.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Http/Requests/Member/MemberMessage/UpdateRequest.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Http/Requests/Member/MemberMessage/DestroyRequest.php ] 生成成功 文件 [ /Users/wanchao/www/lara-test/app/Http/Requests/Member/MemberMessage/StoreRequest.php ] 生成成功 # 添加路由 routes/web.php Route::group(['namespace' => 'Member','prefix' => 'member'], function ($route) { $route->get('index', 'MemberController@indexAction'); $route->get('message', 'MemberMessageController@indexAction'); }); ### 修改MemberMessageController ### 在MemberMessageController中dd打印数据 public function index() { $filters = Helper::filter_array(request()->all()); $filters['order'] = 'id desc'; $list = $this->memberMessageRepository->paginate($filters); dd($list); } # 终端 php artisan serve vist localhost:8001/member/message # 你应该尝试一些你的数据库中存在的表,而不是机械的去复制粘贴我的栗子
自定义
# 也许你想自定义自己的Repository # 创建一个 Repository.php 在 app\Repository # 对它进行扩展和部分重写,比如success 和error 方法, 可以改为自己喜欢的数据格式
这种模式下开发, 项目结构异常清晰, Repository的使用简洁到爆, 只需要花短短几分钟看一下他的使用说明,你会喜欢上它的 :smile_cat:
感谢 seven 和 鑫鑫 贡献的代码 :bouquet::rose:
如果这个仓库帮助到了你,给我一个star来鼓励我~ :sparkles:,我会坚持继续维护这个仓库
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- MongoDB – 使用模式构建之属性模式
- MongoDB – 使用模式构建之多态模式
- 使用函数式实现观察者模式模式
- 使用模式构建:模式版本控制模式(The Schema Versioning Pattern)
- 使用模式构建:多态模式(The Polymorphic Pattern)
- 使用模式构建:桶模式(The Bucket Pattern)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
R Cookbook
Paul Teetor / O'Reilly Media / 2011-3-22 / USD 39.99
With more than 200 practical recipes, this book helps you perform data analysis with R quickly and efficiently. The R language provides everything you need to do statistical work, but its structure ca......一起来看看 《R Cookbook》 这本书的介绍吧!