ZF 1.9.5
ここ。ON DUPLICATE KEY UPDATE
Zend_Db_Tableを使用するときに、エミュレートする例外をキャッチすることを提案した人がいます。
現在、私は
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'i7dd30253497cfc0539d7c5830a926f7d' for key 'ukey'
..使用する場合
$orderRow = $this->createRow();
$orderRow->ukey = $ukey;
$orderRow->save();
だから、私はそのバガーをで捕まえたいですtry / catch
。例外としてupdate
、それ以外の場合insert
。
しかし、私は何を捕まえるのかわかりません。Zend_Db_Exception
?PDOException
?Zend_Db_Adapter_Exception
?何度か試しましたが、うまくいかなかったと思います。
後で編集します。これは私のために働いた:
try {
$orderRow = $this->createRow();
$orderRow->ukey = $ukey;
$orderRow->$stepCol = time();
$orderRow->save();
} catch (Zend_Db_Statement_Exception $e) {
// on UNIQUE error, update
if ($e->getCode() == 23000) {
$orderRow = $this->fetchRow($this->select()->where('ukey = ?', $ukey));
$orderRow->$stepCol = time();
$orderRow->save();
}
}