“但是当我像这样创建自定义查询时,我会在数组中得到结果”
你得到一个数组,因为你Zend_Db_Adapter_Abstract::fetchAll()
根据代码中的 docblock 调用它返回一个数组: -
/**
* Fetches all SQL result rows as a sequential array.
* Uses the current fetchMode for the adapter.
*
* @param string|Zend_Db_Select $sql An SQL SELECT statement.
* @param mixed $bind Data to bind into SELECT placeholders.
* @param mixed $fetchMode Override current fetch mode.
* @return array
*/
public function fetchAll($sql, $bind = array(), $fetchMode = null)
“当我在我的 DbTable 上调用 fetchAll() 时,我会在 DbTable 中定义的正确 DbRow 类中得到结果。”
当您执行此操作时,您将Zend_Db_Table_Abstract::fetchAll()
根据代码中的 docblock 调用 which 返回Zend_Db_Table_Rowset
:-
/**
* Fetches all rows.
*
* Honors the Zend_Db_Adapter fetch mode.
*
* @param string|array|Zend_Db_Table_Select $where OPTIONAL An SQL WHERE clause or Zend_Db_Table_Select object.
* @param string|array $order OPTIONAL An SQL ORDER clause.
* @param int $count OPTIONAL An SQL LIMIT count.
* @param int $offset OPTIONAL An SQL LIMIT offset.
* @return Zend_Db_Table_Rowset_Abstract The row results per the Zend_Db_Adapter fetch mode.
*/
public function fetchAll($where = null, $order = null, $count = null, $offset = null)
“是否有任何参数可以强制在 DbRows 中接收此数据,或者我应该自己创建行并用这些数组填充它们?”
不,没有,但如果您在正确的对象上调用正确的方法,您将返回您的行集。
为此,请更改此行:-
$query = $this->_dbTable->getDefaultAdapter()->select()
到:-
$query = $this->_dbTable->select()
这一行:-
return $this->_dbTable->getDefaultAdapter()->fetchAll($query);
到:-
return $this->_dbTable->fetchAll($query);
那应该可以为您提供所需的东西。如果您卡在 ZF 中,查看代码总是值得的,它是迄今为止最好的文档。