在Zend Framework中使用数据映射器
例如:
我需要检索一组男性用户的ID,名字和姓氏,但没有别的。
所以我在UserMapper中有一个名为fetchAllMaleUsers()的函数,它返回一组用户实体。
即:
public function fetchAllMaleUsers() {
$select = $this->getDbTable()
->select()
->from($this->getDbTable(),
array('ID', 'FirstName', 'LastName'))
->where('Gender = ?', 'M');
$resultSet = $this->getDbTable()->fetchAll($select);
$users = array();
foreach ($resultSet as $row) {
$user = new Application_Model_User();
$user->setId($row->ID)
->setFirstName($row->FirstName)
->setLastName($row->LastName);
$users[] = $user;
}
return $users;
}
1)完美的映射器/网关,或者你称它为好。
2)你可以做但我非常不鼓励这个。 为什么? 稍后在你的应用程序中,你无法分辨你从哪里获得模型。 所以你必须检查模型中的值是否设置在每次你不确定它是否被设置,或者你需要一些自动加载的东西来弥补缺失值(这与缺少东西一样糟糕)。 另一个原因是,您不能在其他可能需要用户模型的其他属性的位置重用该功能。 afaik的最后一个原因是,模型在任何时候代表完整的实体,而不是其中的一部分。 并没有真正的理由为什么不加载所有的领域(除了引用其他实体,为什么要自动加载)。
除了Fge的回复,我相信$ resultSet应该已经返回了Application_Model_User类型的值。 如果没有,您可能需要在Application_Model_DbTable_User中设置$ _rowClass。
链接地址: http://www.djcxy.com/p/56239.html