【发布时间】:2017-10-20 21:10:31
【问题描述】:
我只是想弄清楚是否要使用存储库模式。 我能找到的三个优点:
1. Testability (repositories can be injected into the controller)
2. Abstraction (complex eloquent queries can be refactored into repository functions)
3. Decoupling (enables me to replace the persistence layer)
但是,除了第 3 点之外,我并没有真正清楚地看到它。
1. I can just as well inject the model (or a mock for testing)
2. I can also abstract the queries into functions and place them into the model instead of a repository.
因此,假设我不关心被 Eloquent 绑定,我并没有真正看到使用存储库的意义。我感谢任何改变我想法的论点。
【问题讨论】:
-
如果您使用 Eloquent,我建议您将所有与数据相关的逻辑放入模型中。如果您这样做,您仍然遵循存储库模式,并且使用存储库包有太多缺点,并且不会给您带来任何真正重要的优势。如果您使用的是查询生成器或原始 SQL 查询,请使用存储库包。
-
Repository Pattern 将帮助您替换整个 ORM 并使用其他一些 OM,例如 Doctrine。如果您通过注入 Eloquent 模型类来创建存储库,那么在将来用其他一些 ORM 替换 eloquent ORM 方面将具有一定的灵活性。但是如果你只是想把 Eloquent 分解成一个额外的抽象,那么它就毫无价值,而只是一个抽象。
标签: laravel eloquent repository-pattern