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()
语句都将返回一个对象数组…不像我希望的那么简单,但仍然足够干净,可以在我看来使用,谢谢