2

私はほとんどの作業がモデルで行われるアプリケーションを作成しています。モデルは 2 つの (かなり異なる) グループのタスクを実行します。

  1. CRUD データベース操作
  2. およびオブジェクトを作成しTable、データベースからデータを取り込みますFormContentBox

その結果、一部のモデルは非常に大きくなるため、 Laravel フレームワークからIlluminate Database コンポーネントをセットアップしました。Eloquent ORM を使用して CRUD を実行するモデルを作成し、テーブルとフォームを生成する別のモデルを作成することを考えています。 、Eloquentモデルのメソッドを呼び出してデータを取得します。

ドメイン駆動設計におけるこれら 2 つの異なる「モデル」の正しい用語は何ですか? CRUDエンティティを実行するモデルとその他のモデルをモデルと呼びますか?

関連する投稿をいくつか読みましたが、モデルは現実世界の何かのモデルであることを理解しています。たとえば、新しい請求書を作成するためInvoicesのオブジェクトを返すためのメソッドと、すべての請求書をリストするためのオブジェクトを持つモデルがあります。ただし、単一の請求書の PDF を返す方法もあります。つまり、これは実際には単一の請求書のモデルではありません。複数の請求書のデータを返す機能があります...これはまだモデルですか?FormTable

申し訳ありませんが、実際にはここに 2 つの質問があります。正しい用語が何か疑問に思っているだけです。または、この種のことについて読むことができる場所への提案を探しているので、ベストプラクティスと見なされ、意味のあることを行うことができます。他のプログラマー。

前もって感謝します。

更新これを読んだ後、Laravelがモデルと呼んでいるもの(ビジネスロジックを追加する前)は、実際にはエンティティであるように思えます。私が計画しているのはEntities、ORM の「モデル」を含むフォルダとModels、ビジネス ロジックの「モデル」を含む別のフォルダを作成することです。これは一般的な方法ですか?

4

2 に答える 2

2

あなたの場合、テーブルまたはフォームはドメインモデルではないと思います。

ドメイン モデルは、コア ビジネス概念を反映しています。たとえば、invoice.isOverdue() を呼び出して請求書の期限が過ぎているかどうかを調べることができます。

一方、請求書を一覧表示するためのテーブル、アウトポート pdf は、プレゼンテーションの問題を処理する責任があります。

Presetation コンポーネントは Domain オブジェクトに依存しますが、その逆はありません。たとえば、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 ファイルの autoload セクションに追加すると思います。

軽量のコントローラーとモデルを用意することは良い習慣だと考えられており、モデルにはすべての余分なロジックを含めることを実際には意図していないため、すべての重い作業を配置するリポジトリを用意すると、アプリを非常に整理しておくのに役立ちます。

于 2013-08-20T12:22:02.870 に答える