当我在zend框架中使用toArray()时出现致命错误

时间:2012-12-22 14:25:21

标签: zend-framework toarray

我需要帮助来消除zend框架中toArray()的致命错误。

  

致命错误:在非对象上调用成员函数toArray()

我在控制器中使用以下代码

$obj     = new Admin_Model_UserMapper();
$where   = array('id = ?'=>$decryptId);
$data    = $obj->fetchAll($where);
//  $currentData = $data->current();
$dataArr = $data->toArray();


$form = new Admin_Form_UserForm();
$form->setAction('edit-user');
$form->populate($dataArr);

当我使用toArray()current()时,我在这两种情况下都会遇到致命错误。

我已经使用了以下代码,但没有得到任何解决方案,它会产生相同的错误:

$db = Zend_Db_Table::getDefaultAdapter();
$select = $db->select()->from('user')->where('id= ?',$decryptId);
$stmt = $select->query();
$result = $stmt->fetchAll();
if(count($result) > 0){
    $dataArr = $result->toArray();
} 

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

您的fetchAll不会返回任何数据。把它包裹起来......

$where = array('id = ?'=>$decryptId);
$data  = $obj->fetchAll($where);
if ($data->count()){
    //  $currentData = $data->current();
    $dataArr = $data->toArray();
}else{
    // no records found!
}

问题在于你的$where,你不能像键/值数组一样使用它。使用以下代码:

$where = $this->getAdapter()->quoteInto('id = ?', $decriptId);