diff --git a/lib/Doctrine/ORM/Persisters/SingleTablePersister.php b/lib/Doctrine/ORM/Persisters/SingleTablePersister.php index 897900d22df..0f1b9e3dea3 100644 --- a/lib/Doctrine/ORM/Persisters/SingleTablePersister.php +++ b/lib/Doctrine/ORM/Persisters/SingleTablePersister.php @@ -120,10 +120,10 @@ protected function _getSelectConditionSQL(array $criteria, $assoc = null) $values[] = $this->_conn->quote($this->_class->discriminatorValue); } - $discrValues = array_keys($this->_class->discriminatorMap); + $discrValues = array_flip($this->_class->discriminatorMap); - foreach ($this->_class->subClasses as $i => $subclassName) { - $values[] = $this->_conn->quote($discrValues[$i]); + foreach ($this->_class->subClasses as $subclassName) { + $values[] = $this->_conn->quote($discrValues[$subclassName]); } $conditionSql .= $this->_getSQLTableAlias($this->_class->name) . '.' . $this->_class->discriminatorColumn['name'] diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 91440eacf57..0a04d05aeb9 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -2202,6 +2202,12 @@ public function createEntity($className, array $data, &$hints = array()) if (isset($class->associationMappings[$class->identifier[0]])) { $idHash = $data[$class->associationMappings[$class->identifier[0]]['joinColumns'][0]['name']]; } else { + /*echo $className; + \Doctrine\Common\Util\Debug::dump($data); + \Doctrine\Common\Util\Debug::dump($class->identifier); + ob_end_flush(); + ob_start();*/ + $idHash = $data[$class->identifier[0]]; } $id = array($class->identifier[0] => $idHash);