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)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mathematica Cookbook
Sal Mangano / O'Reilly Media / 2009 / GBP 51.99
As the leading software application for symbolic mathematics, Mathematica is standard in many environments that rely on math, such as science, engineering, financial analysis, software development, an......一起来看看 《Mathematica Cookbook》 这本书的介绍吧!