我有这段代码
$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
感谢收看:)
答案 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的错误。