我目前有一個網站,它依賴於使用PHP中Doctrine ORM的活動記錄模式。我通常是這種方法的粉絲 - 它非常簡單,適用於管理簡單的CRUD應用程序。但隨着這個網站的增長,我認爲我對更強大的域功能的需求也會增長。我想知道其他類型的數據設計模式如何與ORM結合使用。PHP數據訪問設計模式來補充ORM
我的基本問題,現在的問題是,這種理論似乎工作最好的,因爲看中查詢語言,所以我的模型是用類似的方法充斥:
function getBySomeClassfication($classification)
{
return Doctrine_Query::create()
->select('stuff')
->from('ModelClass')
->where('something = ?', $classification)
->execute();
}
,或者如果我想直接訪問模型類:
Doctrine::getTable('ModelClass')->findAll();
這意味着我最終將使用Doctrine的對象包裝器而不是直接在我的域對象上工作。我覺得所有這些都應該存在於較低的抽象層次上。
我只是不太確定最好的方法是什麼。我覺得ORM是查詢單個表格和處理關係的一個很好的層。但我希望在創建跨多個模型/表的域對象方面有更大的靈活性。
我已經讀了有關使用Repository模式,但還是有一些猶豫:
我不想只是創建了一個抽象層毫無意義,簡單地堆滿了原來的問題。
我不想重新創建或渲染無用的使用Active Record ORM的全部觀點。
有什麼想法或建議嗎?