2

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

  1. CRUD 数据库操作
  2. 创建Table和对象FormContentBox填充数据库中的数据

结果有些模型非常大,所以我已经从Laravel 框架中设置了Illuminate Database 组件,我正在考虑使用 Eloquent ORM 创建执行 CRUD 的模型,然后使用单独的模型生成表格和表单,调用 Eloquent 模型中的方法来获取数据。

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

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

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

提前致谢。

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

4

2 回答 2

2

在您的情况下,我不认为 Table 或 Form 是域模型。

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

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

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

public class Invoice {

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

您可能会对这篇文章感兴趣,了解该组件的职责。

于 2013-08-20T12:52:12.640 回答
1

通常的做法是在模型文件夹中设置 laravel 中的模型。我相信您正在寻找的称为存储库,您可以为其创建一个文件夹,并将其添加到 composer.json 文件的自动加载部分。

拥有轻量级控制器和模型并不真正打算包含所有额外的逻辑被认为是一种很好的做法,因此拥有可以放置所有繁重工作的存储库将有助于使您的应用程序保持井井有条。

于 2013-08-20T12:22:02.870 回答