这是支持使用数据映射器模式的论点的核心。
使用您在示例中似乎使用的结构,尝试将organisation_types
对象传递到Organisation
模型中会遇到很大的麻烦。但是,您可以在查询中执行连接以连接到organisation_types
表,但连接对象不太可能是合理的。
加入organization_types 表:
//assuming this is a DbTable model that extends Zend_Db_Table_Abstract
function getOrganisations($where=null,$order='name ASC',$offset=null,$limit=null){
$select = $this->select()->setIntegrityCheck(FALSE);//This locks the table to allow joins
$select->joinLeft('organisation_types', 'organisation_types.id = organisation.organisation_type_id');//This will join the tables with all feilds, use the join type you like.
if (!is_null($where) {
$select->where($where);
}
if (!is_null($order) {
$select->order($order);
}
if (!is_null($offset) {
$select->limit(null,$offset);//offset is second arg in limit() in select()
}
if (!is_null($limit) {
$select->limit($limit);
}
$Result = $this->fetchAll($select);
if (!$Result){
return array();
}
return $Result->toArray();
}
这应该让您了解表连接的工作方式。如果您想使用这些对象,您需要使用不同的结构重新开始。
我在 PHPMaster 上找到了一些很好的教程,它们帮助我了解数据映射器和域模型。
构建领域模型,介绍
集成数据映射器
此外,在线书籍Survive The Deepend有一个很好的数据映射器模式示例以及如何测试它。
祝你好运...