在我的模型中,我有以下功能
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);
答案 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'];
希望我的帮助。