【发布时间】:2011-10-05 02:59:31
【问题描述】:
我主要使用带有分页器的 zend_db_table,问题是它会返回 zend_db_rows 而不是我的数据映射器中的域对象。
比方说:
class Content_Model_ArticleMapper {
/*
* @param Zend_Db_Select $select
* @return Zend_Paginator
*/
public function getPaginator($select = null){}
}
我可以通过覆盖自定义行集中的 _loadAndReturnRow 方法来破解它 然而,这很丑陋,因为当我查询表时我不再有 Zend_Db_Row 了。 并松散方法,例如我不想在域对象上复制的 save 。 :
class Content_Model_DbTable_Rowset_Articles extends Zend_Db_Table_Rowset {
protected function _loadAndReturnRow($position)
{
if (!isset($this->_data[$position])) {
require_once 'Zend/Db/Table/Rowset/Exception.php';
throw new Zend_Db_Table_Rowset_Exception("Data for provided position does not exist");
}
// do we already have a row object for this position?
if (empty($this->_rows[$position])) {
$this->_rows[$position] = new Content_Model_Article($this->_data[$position]);
}
// return the row object
return $this->_rows[$position];
}
}
所以我的问题是你如何做到这一点? :) 你会编写自定义分页器适配器吗?
【问题讨论】:
-
“你写自定义的 Paginator 适配器吗?”,是的,我相信这是唯一的最佳实践。
标签: zend-framework pagination datamapper