可以为 controller 注入多个 repository 吗?

在l5-repository自动生成的controller中,看到使用 __construct 为控制器注入了一个repository,如果我的某个控制器方法涉及到多个类型的repository,那么这些repository是应该使用控制器的方法来注入:

class UserController{
public function create(UserRepository $userRepo,PostRepository $postRepo){
    }
}

还是全部通过 __construct 来注入:

class UserController{
function __construct  (UserRepository $userRepo,PostRepository $postRepo){
    }
}

各位同学是怎么使用这种模式的了?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8
leo

都可以

6年前 评论

@leo 可以在一个repository的自定义方法中使用多个不同类型的Model吗?

6年前 评论

file

有些暴力 →_→

6年前 评论

@LuminEe 确实有点暴力啊兄弟,如果需要扩展,那么__construct 会越来越多,请问你怎么解决的?

6年前 评论

@mygoodidea 公司项目结构目前就这个样子,如果再新加模块的话,可能要考虑拆分服务了,例如把user 相关的拆出去。

6年前 评论

@mygoodidea 现在想想,第一种手动载入比较好,根据不同服务,载入不同的仓储,这样应该比较清晰明了。

6年前 评论

@LuminEe 是的,我也在纠结,但是在github上看到好多demo 都是在 构造函数 注入,所以害怕从方法注入以后会遇到坑....

6年前 评论

可以的,不嫌麻烦,就再加一个service层,repository跟model打交道,service跟repository打交道, controller跟service打交道。

至于可不可以多个,都是看情况,都是可以的。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!