0

私のモデルでは、次の関数があります

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); 
4

2 に答える 2

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;
}
于 2013-06-04T19:00:03.653 に答える
0

fetchRow() 関数はすでに配列を返すため、配列に「キャスト」する必要はありません。次のような方法で直接アクセスできます

 $result = $this->_db->fetchRow($select);
//so now you can access or assign values to a variable 
$user_id=$result['user_id'];

それが私の助けになることを願っています。

于 2013-06-05T11:20:13.987 に答える