【问题标题】:Using model as public in repository在存储库中将模型用作公共模型
【发布时间】:2015-08-08 03:09:04
【问题描述】:

我正在使用 Laravel 框架并尝试使用它,但发现了一些令人不安的问题。

正如我被告知的那样,我应该创建用于完成整个数据管理的存储库。但是 Eloquent 做起来要容易得多,如果我在存储库上创建 get()getByAttr() 之类的函数,这几乎就是 Eloquent 所做的事情。它甚至限制了我。

所以我想,为什么不将$model 设置为public,然后我可以使用$repository->model->Eloquent(),如果有一些复杂的功能,我将在repository 中编码。

这是个坏主意吗?如果是,请解释原因。如果有更好的方法,我很乐意知道。

【问题讨论】:

  • 祝你的问题好运,但我认为我不会将此归类为“一些令人不安的问题”... :)
  • @JoelHinz 是的,因为我可以用 Eloquent 做很多事情,而创建一个已经创建的方法对我来说是愚蠢的..

标签: laravel model-view-controller model repository


【解决方案1】:

存储库的重点在于它处理数据查询,而您正在使用存储库接口来执行此操作。通过使用存储库,您可以从数据中抽象出控制器。

例如,如果您直接在控制器中使用 Eloquent(正如您在问题中想要做的那样),那么如果您决定将来不使用 eloquent,您将需要重写您的每个控制器使用新的 ORM(或您正在使用的 w/e)。通过使用存储库,您只需要重写存储库实现以使用新的 ORM,仅此而已。

这篇文章深入探讨了存储库模式http://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 2020-01-14
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多