我目前有一个网站,它依赖于使用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的全部观点。
有什么想法或建议吗?