我需要一個數據映射/存儲庫解決方案,並希望避免必須寫我自己的。與遺留數據庫學說,從多個表中獲取字段
主義似乎滿足除了一個的所有要求,但我只是不知道該怎麼做。
我正在使用遺留數據庫,我希望我的域對象與數據庫完全無關,直到我們能夠逐個淘汰舊應用程序部分(至少需要一年)。這意味着我需要一種方法將其他表中的字段添加到實體中。
下面是一個例子:
<?php
namespace Entities;
class Article
{
protected $id;
protected $name; // from article table
protected $description; // from article_info table, joined from article table
protected $stock; // from article_variation_info, joined from article_info table
...
}
文檔似乎表明兩個可能的解決方案的原則:
- 爲所有表創建實體,然後使用自定義的getter/setter方法添加一個字段一個實體
- 使用本機SQL獲取實體數據和每個存儲庫查詢(see here)
我想避免第一個選項,因爲我想爲新應用程序創建一個乾淨的域模型,而不受過去的舊限制/錯誤決策的影響。不得不爲每個表創建實體似乎都適得其反。
第二個選項似乎更好一些,但是如果我必須編寫所有的SQL,那麼我也可以編寫自己的PDO存儲庫和映射器。
我是否錯過了某些東西,或者是學說,而不是我想要做的理想解決方案?
考慮使用SQL視圖。 – Cerad
@Cerad我確實認爲,但插入等似乎沒有工作。至少不在MSSQL上, – Patrick
你可以寫入(插入/更新)真實的表格,只是使用視圖來讀取類模型?或者,如果您想嘗試寫入視圖,則[應該可以在SQL Server上](http://stackoverflow.com/a/3127568/472495),具體取決於您構建視圖的方式。 – halfer