2013-08-20 66 views
2

我寫的大多數跑腿的模型完成應用程序的分離,該機型執行的任務2(相當明顯)組: -困惑模型/實體意義和CRUD和業務邏輯

  1. CRUD數據庫操作
  2. 創建TableFormContentBox對象,從數據庫

一些模型,結果是相當大的填充數據,所以我已經設置了Illuminate Database componentLaravel framework和我想使用雄辯ORM創建模型,執行CRUD,然後有單獨的模型生成表和表格,調用Eloquent模型中的方法來獲取數據。

在域驅動設計中,這兩個不同「模型」的正確名詞是什麼?我是否打電話給CRUD 實體和其他型號型號

我讀過一些相關的帖子,我知道一個模型是現實世界中某種東西的模型。例如,我有一個名爲Invoices的模型,其中包含返回Form對象,創建新發票和Table對象的方法,以列出所有發票。但它也有一個返回單張發票PDF的方法。所以這不是真正的單一發票模型 - 它有能力爲多個發票返回數據......這仍然是一個模型?

道歉實際上有兩個問題在這裏,我只是想知道什麼是正確的術語,或尋找建議到某個地方我可以閱讀關於這種事情,以便我可以做一些被認爲是最佳實踐和對其他程序員會有意義。

在此先感謝。

更新所以閱讀this後,在我看來,什麼Laravel調用模型(增加業務邏輯之前)實際上是一個實體。所以我打算做的是將一個名爲Entities的文件夾與我的ORM「模型」和另一個名爲Models的文件夾與業務邏輯「模型」一起使用 - 這是常見的做法嗎?

回答

1

通常的做法是在Models文件夾中設置laravel中的模型。我相信你正在尋找的是名爲倉庫的文件夾,你可以爲它創建一個文件夾,然後將它添加到composer.json文件中的自動加載部分。

它被認爲很好的做法,輕巧控制器和模型並不真的打算包含所有額外的邏輯,所以有資料庫,你會把所有繁重的任務將有助於保持你的應用程序非常有組織。

+0

好吧,我已經讀了一些,看起來實體應該處理可識別的記錄,存儲庫應該包含更復雜的查詢和服務,然後包含使用存儲庫的業務邏輯,所以服務將生成我的表等...對象 – rgvcorley

2

我不認爲表格或表格是您的案例中的領域模型。

域模型反映了您的核心業務概念。例如,您可以通過調用invoice.isOverdue()

來回答發票是否逾期。另一方面,列出發票的表格,outport pdfs負責處理介紹問題。

預設組件對域對象具有依賴性,但反之亦然。例如,您可以在html頁面上列出發票,或通過pdf列出Outport發票。但是你可能不想要的代碼看起來是這樣的:

public class Invoice { 

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

你可能有興趣在此post該組件的責任。

+0

所以也許我應該有幾個類,例如'InvoiceTables''InvoiceForms''InvoiceEntity''和'InvoiceRepository'?在實體處理簡單的CRUD操作的情況下,存儲庫執行更復雜的查詢,而表和表單使用存儲庫來填充Form和Table對象,然後將其傳遞給控制器​​以將其引入視圖? – rgvcorley

+0

@rgvcorley我不熟悉PHP。在java中,我使用InvoiceRepository來檢索發票,並讓它回答一些問題(例如過期還是應付金額),或者在更新後將其存儲回存儲庫。表格和表格在簡單的項目中不是必需的,但如果您想從領域模型中提出表達方面的問題,則需要它們。 – Hippoom