I use rich domain model in my app. The basic ideas were taken there. For example I have User and Comment entities. They are defined as following:
<?php
class Model_User extends Model_Abstract {
public function getComments() {
/**
* @var Model_Mapper_Db_Comment
*/
$mapper = $this->getMapper();
$commentsBlob = $mapper->getUserComments($this->getId());
return new Model_Collection_Comments($commentsBlob);
}
}
class Model_Mapper_Db_Comment extends Model_Mapper_Db_Abstract {
const TABLE_NAME = 'comments';
protected $_mapperTableName = self::TABLE_NAME;
public function getUserComments($user_id) {
$commentsBlob = $this->_getTable()->fetchAllByUserId((int)$user_id);
return $commentsBlob->toArray();
}
}
class Model_Comment extends Model_Abstract {
}
?>
Mapper's getUserComments function simply returns something like:
return $this->getTable->fetchAllByUserId($user_id)
which is array. fetchAllByUserId accepts $count and $offset params, but I don't know to pass them from my Controller to this function through model without rewriting all the model code.
So the question is how can I organize pagination through model data (getComments). Is there a "beatiful" method to get comments from 5 to 10, not all, as getComments returns by default.