2 つの条件が満たされたときにテーブルのエントリを更新したい。
私はこの声明を持っていますが、それは条件が1つだけです
$this->dbo->update('mytable', $data, $this->dbo->quoteInto('id= ?', $id));
「ID」の場所を確認するだけでなく、ユーザーIDも確認したい..
どんな助けにも感謝します。
2 つの条件が満たされたときにテーブルのエントリを更新したい。
私はこの声明を持っていますが、それは条件が1つだけです
$this->dbo->update('mytable', $data, $this->dbo->quoteInto('id= ?', $id));
「ID」の場所を確認するだけでなく、ユーザーIDも確認したい..
どんな助けにも感謝します。
$where 引数が配列を受け入れて解析し、引数の処理方法に関するコードの_whereExpr()
メソッドを参照するため、これに似たものが機能するはずです。Zend_Db_Adapter_Abstract
$where
$this->dbo->update('mytable', $data, array('id= ?'=> $id, 'user_id=?'=>$userId));
アプローチを変更して、update の代わりに 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;
}
はい、この方法はもう少し冗長で、少し複雑です。ただし、「INSERT」と「UPDATE」の制限にぶつかり始めると、save() はいくつかの便利な機能を提供できます。