我正在使用Laravel框架,我尝试使用它,我发现了一些令人不安的问题。
据我所知,我应该创建执行整个数据管理的存储库。但是,如果我在存储库中创建像get()
或getByAttr()
这样的函数,那么Eloquent就会这么容易了。它几乎就像Eloquent所做的那样......它甚至限制了我。
所以我想,为什么我不应该将$model
设置为public
,然后我可以使用$repository->model->Eloquent()
,如果有一些复杂的功能,我只需要在repository
。
这是个坏主意吗?如果确实如此,请解释原因。如果有更好的方法,我会很高兴知道它。
答案 0 :(得分:1)
存储库的重点在于它处理数据查询并且您使用存储库接口来执行此操作。通过使用存储库,您可以从数据中抽象出控制器。
例如,如果你直接在你的控制器中使用了Eloquent(因为你想在你的问题中做),那么如果你在某个时候决定不再使用雄辩,你需要重写每个人您的控制器使用新的ORM(或者您正在使用)。通过使用存储库,您只需要重写存储库实现以使用新的ORM,仅此而已。
这篇文章深入介绍了存储库模式http://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/