Beispiel #1
0
 /**
  * @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();
 }