zoukankan      html  css  js  c++  java
  • Laravel 6 框架中使用Repository模式

    为什么要使用Repository

    若将数据库逻辑都写在model,会造成model的肥大而难以维护,基于SOLID原则,我们应该使用Repository模式辅助model,将相关的数据库逻辑封装在不同的repository,方便中大型项目的维护

    数据库逻辑

    在CRUD中,CUD比较稳定,但R的部分则千变万化,大部分的数据库逻辑都在描述R的部分,若将数据库逻辑写在controller或model都不适当,会造成controller与model肥大,造成日后难以维护。

    Model
    使用repository之后,model仅当成Eloquent class即可,不要包含数据库逻辑,仅保留以下部分:

    Property:如$table,$fillable…等。
    Mutator:包括mutator与accessor。
    Method:relation类的method,如使用hasMany()与belongsTo()。
    注释:因为Eloquent会根据数据库字段动态产生property与method,等。若使用Laravel IDE Helper,会直接在model加上@property与@method描述model的动态property与method。

    在中大型项目,会有几个问题:

    将数据库逻辑写在controller,造成controller的肥大难以维护。
    违反SOLID的单一职责原则:数据库逻辑不应该写在controller。
    controller直接相依于model,使得我们无法对controller做单元测试。
    比较好的方式是使用repository:
    将model依赖注入到repository。
    将数据库逻辑写在repository。
    将repository依赖注入到service。

  • 相关阅读:
    html常用标签与扩展(标签语义化、Doctype)
    html认识
    兼容性问题统计
    最短的包含字符串 (尺取法)
    与7 无关的数(前缀和)
    子序列(尺取入门)
    孪生素数
    vector 详解
    进制转换(高级版^^)
    容斥 mobius反演
  • 原文地址:https://www.cnblogs.com/jellysheep/p/15000908.html
Copyright © 2011-2022 走看看