• 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。

  • 相关阅读:
    [bzoj1934][Shoi2007]Vote 善意的投票
    [bzoj1834][ZJOI2010]network 网络扩容
    [bzoj2127]happiness
    [bzoj3876][Ahoi2014]支线剧情
    [bzoj1927][Sdoi2010]星际竞速
    [bzoj3223]Tyvj 1729 文艺平衡树
    [bzoj3224]Tyvj 1728 普通平衡树
    FJOI2017 RP++
    [bzoj3529][Sdoi2014]数表
    异步ajax请求数据处理
  • 原文地址:https://www.cnblogs.com/jellysheep/p/15000908.html
Copyright © 2020-2023  润新知