在我的映射器类,我延长AbstractDbMapper
从ZfcBase
从数据库中提取行.一个简单的例子就是这样的代码:
class MyMapper extends AbstractDbMapper
{
//...
public function fetchAll() {
$select = $this->getSelect();
return $this->select($select); // returns HydratingResultSet
}
}
Run Code Online (Sandbox Code Playgroud)
问题是$this->select()
返回a Zend\Db\ResultSet\HydratingResultSet
(包含所需和水合物体).但我想返回这些对象的数组而不是HydratingResultSet
包含对象的数组.
首先要看的是,HydratingResultSet::toArray()
但这会返回一个多维数组,而不是一个对象数组.
所以我选择手工完成:
public function fetchAll() {
$select = $this->getSelect();
$results = array();
foreach ($this->select($select) as $object) {
$results[] = $object;
}
return $results; // returns array of needed objects
}
Run Code Online (Sandbox Code Playgroud)
这有效,但在每个获取方法中都看起来很难看.我是否必须修改select()中的代码才能获得所需的行为或者是否有更简单的方法?
顺便说一句:甚至建议返回一个数组或像这样转换它?谢谢你的帮助!