/** * @param \Doctrine\DBAL\Exception\UniqueConstraintViolationException $e * @param \Kdyby\Doctrine\EntityDao $dao * @param \Carrooi\Doctrine\Entities\BaseEntity $entity * @return static */ public static function createFromDuplicateEntryException(UniqueConstraintViolationException $e, EntityDao $dao, BaseEntity $entity) { $match = Strings::match($e->getMessage(), '/DETAIL:\\s+Key\\s\\(([a-z_]+)\\)/'); $column = $dao->getClassMetadata()->getColumnName($match[1]); $value = $dao->getClassMetadata()->getFieldValue($entity, $match[1]); return new static($e, $entity, $column, $value); }
/** * @param UniqueConstraintViolationException $ex */ private function setErrorFlashMessage(UniqueConstraintViolationException $ex) { switch ($ex->getErrorCode()) { case 7: $this->addFlash('error', 'Username already exists'); break; default: $this->addFlash('error', 'Some error occurred during writing to database'); } }