2012-12-22 59 views
0

我需要幫助來刪除zend框架中的toArray()致命錯誤。當我在zend框架中使用toArray()時發生致命錯誤

Fatal error: Call to a member function toArray() on a non-object

我使用下面的代碼在我的控制器

$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(); 
} 

我怎樣才能解決這個問題?

+0

你需要做一些調試。嘗試'var_dump($ result); exit;'在fetchAll後面查看'$ result'是什麼。 –

回答

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); 
+0

也許最好在if()中使用is_object($ data),而ZF TDG有方法通過id(主鍵)查找記錄:$ obj-> find($ id); http://framework.zend.com/manual/1.12/en/zend.db.table.html#zend.db.table.find – tasmaniski

相關問題