/** * @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); }
public static function getPairs(EntityDao $dao, array $options = []) { $options += ['criteria' => [], 'orderBy' => [], 'key' => $dao->getClassMetadata()->getSingleIdentifierFieldName()]; if (empty($options['value'])) { $options['value'] = self::getValueFieldFallback($dao->getClassMetadata()); } if (is_string($options['orderBy'])) { $options['orderBy'] = [$options['orderBy'] => 'asc']; } if (is_string($options['value']) && $dao->getClassMetadata()->hasField($options['value']) && !array_filter($options['criteria'], 'is_callable')) { return $dao->findPairs($options['criteria'], $options['value'], $options['orderBy'], $options['key']); } else { return self::getPairsAdvanced($dao, $options); } }
/** * @return ClassMetadata */ public function getClassMetadata() { return $this->dao->getClassMetadata(); }