Zend_Db_Table_Abstract :: update()可能的错误

时间:2011-08-15 11:09:14

标签: zend-framework zend-db zend-db-table

我有这段代码

$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$users_table = new Application_Model_UserModel();
$result = $users_table->update(array(
    "confirmed" => 1,
    "key" => null
), array(
    $db->quoteInto("'type' = ?", Application_Model_UserModel::TYPE_AWATAG),
    "'confirmed' = 0",
    $db->quoteInto("'id' = ?", $id),
    $db->quoteInto("'key' = ?", $key)
));

// no record updated
if ($result == 0) {

    throw new Zend_Exception("User not found.");

}

抛出异常(即:用户记录尚未更新),即使所有where条件都正确。

是个bug吗?你看到有什么错误吗?

解决方案

我没有引用所有列名称并以这种方式添加了表引用:

tablename.columnname = newvalue

感谢收看:)

1 个答案:

答案 0 :(得分:0)

你想做什么?

您的Application_Model_UserModel必须延长Zend_Db_Table_Abstract

请参阅http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.defining

请记得在$_name

中添加表名

快速入门的一些代码

class Application_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract
{
    /** Table name */
    protected $_name    = 'guestbook';

    //Now add you method and save from here
     public function updateGuest( $post, $id )
     {
         $data = array(
              'updated_on'      => '2007-03-23',
              'bug_status'      => 'FIXED'
         );

         $where = $this->getAdapter()->quoteInto('bug_id = ?', 1234);

         $this->update($data, $where);
     }
}

现在,当您更新pass $ data时,这是一个关联数组,其中键作为表中的字段,第二个是where子句。

这不是zend-framework的错误。