l5-repository,请教一下这个的实用性

现在有的laravel中有必要引入这个包嘛?直接Model层不就行了。这个多了两层是干什么用的呢,如果说是处理复杂且公用的数据库逻辑的话,那这个service 不就好了,大神能讲解一下这个具体的应用场景和使用方法嘛

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

http://www.sangeng.org/blog/detail_517.html 简体中文版可能更舒服些

11个月前
讨论数量: 11
ADKi

能讲解一下这几个文件都是干什么用的吗
Models,Validators,controllers 知道别的不是很清楚

file

2年前
ADKi

@lx1036 这东西受教了,解决了我多年的疑惑,谢谢

2年前

@lx1036
厉害,这东西真的重要。

2年前

我在别处的一个回答 直接粘贴过来:

我觉得 model 本身已经定义了一些和表本身相关的东西,比如 relationship 之类的,有时候需要对数据库进行比较复杂的操作的时候如果再把这些操作也写在 model 里面, model 类就会变得蛮大。这个时候就有必要把对数据库的复杂操作封装好单独拿出来,比如涉及到多个关联表插入的事务。这样 model 类的职责就是单纯的映射到一个表,不提供封装好了的操作,在 repository 里面对数据库的操作除了一般是直接拿到 repository 中的 model 本身进行查询,通过改变 model 对象,来改变 model 的查询结果。这样做还有一个好处就是以后要是引入了其他类型的数据库,比如 mogodb ,就不需要在 controller 里面去修改,不去动核心的业务逻辑,去修改 repository 就好, repository 本身是被接口限制的,所以可以很好的解开耦合。
我个人觉得 repository 还有一个好处就是把查询条件和结果的 transform 也集成进来,这样可以大大减少 controller 里面的代码,让业务逻辑更加清晰,出了 bug 也可以快速将范围缩小到某一个局部。

https://github.com/zhaohehe/z-repository 这是我之前写的一个小型的repository包,借鉴了不少l5-repository的思想。

2年前
ADKi

@zhaohehe 嗯好的,谢谢回来看一下那个包说明

2年前
MrW

@lx1036 这个文章太棒了

1年前

repository 接口层感觉是没有存在必要的, 只会加重设计. 因为在一般情况下,切换数据库的几率非常非常低

1年前

选择l5-repository,但是不能在eloquent文件中用where方法,好像只能用其封装好的那些方法,如果有一些更特殊的需求,它的方法不能完全满足。请问该怎么扩展这里?用DB?

9个月前
AspireHe

解耦 重构简单,应对变化的需求很重要,虽然多了几个文件,多了几个调。如果项目的需求有极大的可能发生变化,不需要每个文件都重构,这就看你接口设计的水平了

9个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会