BasicEntityPersister::exists() was not supporting identifiers that are associations. Fixes DDC-1382.
This commit is contained in:
parent
ebe933810e
commit
24042863ac
@ -747,6 +747,7 @@ class BasicEntityPersister
|
|||||||
*
|
*
|
||||||
* @param array $assoc
|
* @param array $assoc
|
||||||
* @param Doctrine\DBAL\Statement $stmt
|
* @param Doctrine\DBAL\Statement $stmt
|
||||||
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function loadArrayFromStatement($assoc, $stmt)
|
private function loadArrayFromStatement($assoc, $stmt)
|
||||||
@ -771,6 +772,8 @@ class BasicEntityPersister
|
|||||||
* @param array $assoc
|
* @param array $assoc
|
||||||
* @param Doctrine\DBAL\Statement $stmt
|
* @param Doctrine\DBAL\Statement $stmt
|
||||||
* @param PersistentCollection $coll
|
* @param PersistentCollection $coll
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function loadCollectionFromStatement($assoc, $stmt, $coll)
|
private function loadCollectionFromStatement($assoc, $stmt, $coll)
|
||||||
{
|
{
|
||||||
@ -784,7 +787,8 @@ class BasicEntityPersister
|
|||||||
}
|
}
|
||||||
|
|
||||||
$hydrator = $this->_em->newHydrator(Query::HYDRATE_OBJECT);
|
$hydrator = $this->_em->newHydrator(Query::HYDRATE_OBJECT);
|
||||||
$hydrator->hydrateAll($stmt, $rsm, $hints);
|
|
||||||
|
return $hydrator->hydrateAll($stmt, $rsm, $hints);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1179,6 +1183,7 @@ class BasicEntityPersister
|
|||||||
$sql = $this->_getSQLTableAlias($class->name, $alias == 'r' ? '' : $alias)
|
$sql = $this->_getSQLTableAlias($class->name, $alias == 'r' ? '' : $alias)
|
||||||
. '.' . $class->getQuotedColumnName($field, $this->_platform);
|
. '.' . $class->getQuotedColumnName($field, $this->_platform);
|
||||||
$columnAlias = $this->_platform->getSQLResultCasing($columnName . $this->_sqlAliasCounter++);
|
$columnAlias = $this->_platform->getSQLResultCasing($columnName . $this->_sqlAliasCounter++);
|
||||||
|
|
||||||
$this->_rsm->addFieldResult($alias, $columnAlias, $field);
|
$this->_rsm->addFieldResult($alias, $columnAlias, $field);
|
||||||
|
|
||||||
return $sql . ' AS ' . $columnAlias;
|
return $sql . ' AS ' . $columnAlias;
|
||||||
@ -1228,7 +1233,9 @@ class BasicEntityPersister
|
|||||||
$sql = 'SELECT 1 '
|
$sql = 'SELECT 1 '
|
||||||
. $this->_platform->appendLockHint($this->getLockTablesSql(), $lockMode)
|
. $this->_platform->appendLockHint($this->getLockTablesSql(), $lockMode)
|
||||||
. ($conditionSql ? ' WHERE ' . $conditionSql : '') . ' ' . $lockSql;
|
. ($conditionSql ? ' WHERE ' . $conditionSql : '') . ' ' . $lockSql;
|
||||||
|
|
||||||
list($params, $types) = $this->expandParameters($criteria);
|
list($params, $types) = $this->expandParameters($criteria);
|
||||||
|
|
||||||
$stmt = $this->_conn->executeQuery($sql, $params, $types);
|
$stmt = $this->_conn->executeQuery($sql, $params, $types);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1320,7 +1327,8 @@ class BasicEntityPersister
|
|||||||
public function loadOneToManyCollection(array $assoc, $sourceEntity, PersistentCollection $coll)
|
public function loadOneToManyCollection(array $assoc, $sourceEntity, PersistentCollection $coll)
|
||||||
{
|
{
|
||||||
$stmt = $this->getOneToManyStatement($assoc, $sourceEntity);
|
$stmt = $this->getOneToManyStatement($assoc, $sourceEntity);
|
||||||
$this->loadCollectionFromStatement($assoc, $stmt, $coll);
|
|
||||||
|
return $this->loadCollectionFromStatement($assoc, $stmt, $coll);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1478,6 +1486,7 @@ class BasicEntityPersister
|
|||||||
public function exists($entity, array $extraConditions = array())
|
public function exists($entity, array $extraConditions = array())
|
||||||
{
|
{
|
||||||
$criteria = $this->_class->getIdentifierValues($entity);
|
$criteria = $this->_class->getIdentifierValues($entity);
|
||||||
|
|
||||||
if ($extraConditions) {
|
if ($extraConditions) {
|
||||||
$criteria = array_merge($criteria, $extraConditions);
|
$criteria = array_merge($criteria, $extraConditions);
|
||||||
}
|
}
|
||||||
@ -1485,7 +1494,9 @@ class BasicEntityPersister
|
|||||||
$sql = 'SELECT 1'
|
$sql = 'SELECT 1'
|
||||||
. ' FROM ' . $this->_class->getQuotedTableName($this->_platform) . ' ' . $this->_getSQLTableAlias($this->_class->name)
|
. ' FROM ' . $this->_class->getQuotedTableName($this->_platform) . ' ' . $this->_getSQLTableAlias($this->_class->name)
|
||||||
. ' WHERE ' . $this->_getSelectConditionSQL($criteria);
|
. ' WHERE ' . $this->_getSelectConditionSQL($criteria);
|
||||||
|
|
||||||
return (bool) $this->_conn->fetchColumn($sql, array_values($criteria));
|
list($params, $types) = $this->expandParameters($criteria);
|
||||||
|
|
||||||
|
return (bool) $this->_conn->fetchColumn($sql, $params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user