当满足 2 个条件时,我想更新表中的条目。
我有这个声明,但它只适用于一个 where 条件
$this->dbo->update('mytable', $data, $this->dbo->quoteInto('id= ?', $id));
我不仅要检查“id”的位置,还想检查用户ID ..
感谢任何帮助。
当满足 2 个条件时,我想更新表中的条目。
我有这个声明,但它只适用于一个 where 条件
$this->dbo->update('mytable', $data, $this->dbo->quoteInto('id= ?', $id));
我不仅要检查“id”的位置,还想检查用户ID ..
感谢任何帮助。
与此类似的东西应该可以工作,因为 $where 参数将接受并解析一个数组,请参考中的_whereExpr()
方法以Zend_Db_Adapter_Abstract
获取有关如何$where
处理 arg 的代码:
$this->dbo->update('mytable', $data, array('id= ?'=> $id, 'user_id=?'=>$userId));
我将建议您可能希望改变您的方法并使用 Zend_Db_Table_Row 的 save() 方法而不是更新。这是一个例子。
public function saveUser($id, array $userData, $userId = null)
{
//$this->getDbAdapter is a placeholder for your choice of db adapters, I suggest a DbTable model that extends Zend_Db_Table_Abstract
$select = $this->getDbAdapter()->select();
//if userId is not null build a where clause
if (!is_null($userId)) {
$select->where('user_id = ?', $userId);
}
//build where clause for primary key, two where() in select() will be 'AND' use orWhere() for 'OR'
$select->where('id = ?', $id);
//fetch the row you wish to alter
$row = $this->getDbAdapter()->fetchRow($select);
//assign the data to the row, you can update any or all columns
$row->username = $userData[username];
$row->user_id = $userData[user_id];
//ect...
//save the new data to the row, will only update changed coluns
$row->save();
//return the whole for use in other ways, save() typically only returnbs the primary key.
return $row;
}
是的,这种方法有点冗长,也许有点复杂。但是,当您开始遇到“插入”和“更新”的限制时,save() 可以提供一些有用的功能。