Skip to content

Commit da07356

Browse files
authored
Merge pull request #51 from wave-framework/patch-handle-duplicate-keys
Adds duplicate key exception on insert
2 parents ed34a82 + d96e89d commit da07356

3 files changed

Lines changed: 22 additions & 3 deletions

File tree

src/Wave/DB.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,8 +466,14 @@ public static function insert(Model &$object) {
466466
implode(',', $placeholders)
467467
);
468468

469-
$connection->prepare($sql)->execute($params);
470-
469+
try {
470+
$connection->prepare($sql)->execute($params);
471+
} catch (\PDOException $e){
472+
if($e->getCode() === DB\Exception::SQLSTATE_DUPLICATE_KEY){
473+
throw new DuplicateKeyException($e->getCode(), $e->getMessage());
474+
}
475+
throw $e;
476+
}
471477
$primary_key = $object::_getPrimaryKey();
472478
if($primary_key !== null && count($primary_key) === 1) {
473479
$column = current($primary_key);

src/Wave/DB/Exception.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@
44

55
use Wave;
66

7-
class Exception extends Wave\Exception {
7+
class Exception extends Wave\Exception
8+
{
9+
const SQLSTATE_DUPLICATE_KEY = 1062;
810
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace Wave;
4+
5+
class DuplicateKeyException extends \Wave\DB\Exception
6+
{
7+
public function __construct($message, $code = null)
8+
{
9+
parent::__construct($message, $code);
10+
}
11+
}

0 commit comments

Comments
 (0)