Zend DB fetchAll():作为数组的位置

azz*_*z0r 1 zend-framework zend-db-table

我很困惑为什么Zend_DB不接受一个WHERE子句数组- 或者我是不正确的?我做了以下工作:

$all = new ORM_Model_DbTable_Asset();
$wheres = array('id > 0', 'enabled' => 1);
$all = $all->fetchAll(implode(' AND ', $wheres))->toArray();
Run Code Online (Sandbox Code Playgroud)

我希望如何:

$all = new ORM_Model_DbTable_Asset();
$wheres = array('id > 0', 'enabled' => 1);
$all = $all->fetchAll($wheres)->toArray();
Run Code Online (Sandbox Code Playgroud)

有点令人失望,我错过了什么?

Phi*_*hil 10

Zend_Db_Table_Abstract

/**
 * 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)
Run Code Online (Sandbox Code Playgroud)

所以你是不正确的,fetchAll()接受一个where子句的数组.

您的数组应该如下所示(基于定义Zend_Db_Select)

$where = array(
    'id > 0',
    'enabled = ?' => 1
);
Run Code Online (Sandbox Code Playgroud)