Php Zend_Db_Table_行集到对象数组

Php Zend_Db_Table_行集到对象数组,php,arrays,zend-framework,zend-db,zend-db-table,Php,Arrays,Zend Framework,Zend Db,Zend Db Table,我不是在找$myRowset->toArray()因为我想得到一个对象数组 我想做的是能够将$myRowset与对象数组合并 $myOtherArray = [new Foo(), new Bar()]; $array = array_merge($myRowset, $myOtherArray); 使用Zend_Db_Table_行集是不可能的。使用$myRowset->toArray()不起作用,因为我需要一个对象数组 $myOtherArray = [new Foo(), new Bar

我不是在找
$myRowset->toArray()因为我想得到一个对象数组

我想做的是能够将
$myRowset
与对象数组合并

$myOtherArray = [new Foo(), new Bar()];
$array = array_merge($myRowset, $myOtherArray);
使用Zend_Db_Table_行集是不可能的。使用
$myRowset->toArray()不起作用,因为我需要一个对象数组

$myOtherArray = [new Foo(), new Bar()];
$array = array_merge($myRowset, $myOtherArray);
编辑-我想要的代码示例,但我正在寻找更好的解决方案(如果存在):

// Convert the Zend_Db_Table_Rowset to an array of Zend_Db_Table_Row
$myRowset = $dbTable->fetchAll();
$rowArray = array();
foreach ($myRowset as $row) {
    $rowArray[] = $row;
}

// Merge with other array of objects
$myOtherArray = [new Foo(), new Bar()];

$finalArray = array_merge($rowArray, $myOtherArray);
这是我的“最干净”解决方案:我覆盖Zend_Db_Table_行集

class My_RowSet extends Zend_Db_Table_Rowset {

    public function rowArray() {
        $rowArray = array();
        foreach ($this as $row) {
            $rowArray[] = $row;
        }
        return $rowArray;
    }

}
和Zend_Db_表:

abstract class My_Db_Table extends Zend_Db_Table {

    protected $_rowsetClass = 'My_RowSet';

}
现在我可以做:

$myRowset = $dbTable->fetchAll();
$rowArray = $myRowset->rowArray();

我不确定Zend应该如何知道要从数据库返回的数据实例化什么对象。除了预先搜索数组并自己实例化每个对象之外,我不认为您想要什么是可能的,除非您所说的对象只是指stdClass对象,您可以通过将数组强制转换到对象来创建stdClass对象。但是,由于很多原因,您确实不想这样做。@GordonM不需要实例化任何东西,查询返回的行集包含
Zend\u Db\u Table\u Row
(我的模型对象)的子类型。请参阅我的编辑以便更好地理解。我认为您已经拥有的解决方案几乎是您唯一的选择。您可以使用返回行数组的方法扩展Zend_Db_Table_行集,使其更易于管理,但仅此而已。为什么不使用Zend fetch模式呢?如果要执行
$db->setFetchMode(Zend_db::FETCH_OBJ)然后,之后的任何
fetchAll()
语句都将返回一个对象数组…不像我希望的那么简单,但仍然足够干净,可以在我看来使用,谢谢