gpt4 book ai didi

php - 对模型/实体的含义以及 CRUD 和业务逻辑的分离感到困惑

转载 作者:行者123 更新时间:2023-12-04 04:45:05 32 4
gpt4 key购买 nike

我正在编写一个应用程序,其中大部分工作都是在模型中完成的,模型执行 2(相当不同的)组任务:-

  • CRUD 数据库操作
  • 创建 Table , FormContentBox对象,填充了来自数据库的数据

  • 结果有些模型很大,所以我设置了 Illuminate Database component来自 Laravel framework我正在考虑使用 Eloquent ORM 创建执行 CRUD 的模型,然后使用单独的模型生成表格和表单,调用 Eloquent 模型中的方法来获取数据。

    领域驱动设计中这两种不同“模型”的正确术语是什么?我是否称做 CRUD 的模型 实体 和其他型号 型号 ?

    我已经阅读了一些相关的帖子,我知道模型是现实世界中某些事物的模型。例如,我有一个名为 Invoices 的模型它具有返回 Form 的方法对象,用于创建新发票和 Table对象,用于列出所有发票。但它也有一种返回单个发票 PDF 的方法。所以这并不是一个真正的单张发票模型——它能够返回多张发票的数据……这仍然是一个模型吗?

    抱歉,这里实际上有 2 个问题,我只是想知道正确的术语是什么,或者在我可以阅读的地方寻找有关此类事情的建议,以便我可以做一些被认为是最佳实践的事情,并且对其他程序员。

    提前致谢。

    更新 所以看完后 this在我看来,Laravel 所谓的模型(在向其添加业务逻辑之前)实际上是一个实体。所以我打算做的是有一个名为 Entities 的文件夹。用我的 ORM '模型' 和另一个名为 Models 的文件夹使用业务逻辑“模型” - 这是常见的做法吗?

    最佳答案

    我不认为 Table 或 Form 是您的案例中的域模型。

    领域模型反射(reflect)了您的核心业务概念。例如,您可以通过调用 invoice.isOverdue() 来回答发票是否过期

    另一方面,用于列出发票的表,输出 pdf 负责处理演示问题。

    预设组件依赖于域对象,但反之则不然。例如,您可以在 html 页面上列出发票或通过 pdf 输出发票。但您可能不希望代码如下所示:

    public class Invoice {

    Table list() {...}
    File outport() {....}
    ...add another method for excel maybe?
    }

    您可能对此感兴趣 post对于组件的职责。

    关于php - 对模型/实体的含义以及 CRUD 和业务逻辑的分离感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334080/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com