简单的Zend Db函数返回致命错误“在非对象上调用成员函数toArray()”

时间:2013-06-04 17:29:45

标签: zend-framework zend-db

在我的模型中,我有以下功能

protected $_users ='users'; 

public function getbyid($user_id)
{
$select = $this->_db
            ->select()
            ->from($this->_users)
            ->where('users.user_id =?', $user_id);


$result = $this->_db->fetchRow($select)->toArray();


return $result;
}

调用它时会返回致命错误:

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

任何人都可以指出我做错的方向。

感谢。 Zend_Debug :: dump的输出($ this-> _db-> fetchRow($ select));

array(11) {
["user_id"] => string(1) "1"
["role"] => string(13) "administrator"
["email"] => string(18) "bjh497@hotmail.com"
["password"] => string(40) "62bb49da919f0d349ed2cbbec559d7ed649dd238"
["created"] => string(19) "2013-05-09 07:34:00"
["modified"] => NULL
["status"] => string(6) "active"
["salt"] => string(40) "ce8d96d579d389e783f95b3772785783ea1a9854"
["lastlogin"] => NULL
["first_name"] => string(3) "Bob"
["last_name"] => string(5) "Smith"
}

尝试使用结果在控制器中填充表单,如下所示

    $userdetails = new Account_Model_User;
    $userdetails->getbyid($user->user_id);
    $userdetails = $userdetails;
    $form = new Account_Form_Profile; 
    $form->populate($userdetails); 

2 个答案:

答案 0 :(得分:1)

Zend_Debug::dump调用的外观来看,$this->_db->fetchRow($select)已经返回并且数组,所以如果你调用toArray(),它将抛出你提到的错误。

这完全取决于您希望getbyid函数返回的内容,但我只想将您的代码更新为:

protected $_users ='users'; 

public function getbyid($user_id)
{
    $select = $this->_db
                   ->select()
                   ->from($this->_users)
                   ->where('users.user_id =?', $user_id);

    $result = $this->_db->fetchRow($select);

    return $result;
}

答案 1 :(得分:0)

fetchRow()函数已经返回一个数组,因此,您不需要将其“强制转换”为数组。 你可以通过

之类的东西直接访问它
 $result = $this->_db->fetchRow($select);
//so now you can access or assign values to a variable 
$user_id=$result['user_id'];

希望我的帮助。

相关问题