refactory ResultSetMappingBuilder#addNamedNativeQueryMapping into small submethods
This commit is contained in:
parent
8c407af1fc
commit
fdc9fdae3e
@ -109,7 +109,7 @@ class ResultSetMappingBuilder extends ResultSetMapping
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a the mappings of the results of native SQL queries to the result set.
|
* Adds the mappings of the results of native SQL queries to the result set.
|
||||||
*
|
*
|
||||||
* @param ClassMetadataInfo $class
|
* @param ClassMetadataInfo $class
|
||||||
* @param array $queryMapping
|
* @param array $queryMapping
|
||||||
@ -118,36 +118,61 @@ class ResultSetMappingBuilder extends ResultSetMapping
|
|||||||
public function addNamedNativeQueryMapping(ClassMetadataInfo $class, array $queryMapping)
|
public function addNamedNativeQueryMapping(ClassMetadataInfo $class, array $queryMapping)
|
||||||
{
|
{
|
||||||
if (isset($queryMapping['resultClass'])) {
|
if (isset($queryMapping['resultClass'])) {
|
||||||
$classMetadata = $this->em->getClassMetadata($queryMapping['resultClass']);
|
return $this->addNamedNativeQueryResultClassMapping($class, $queryMapping['resultClass']);
|
||||||
$shortName = $classMetadata->reflClass->getShortName();
|
|
||||||
$alias = strtolower($shortName[0]).'0';
|
|
||||||
|
|
||||||
$this->addEntityResult($class->name, $alias);
|
|
||||||
|
|
||||||
if ($classMetadata->discriminatorColumn) {
|
|
||||||
$discriminatorColumn = $classMetadata->discriminatorColumn;
|
|
||||||
$this->setDiscriminatorColumn($alias, $discriminatorColumn['name']);
|
|
||||||
$this->addMetaResult($alias, $discriminatorColumn['name'], $discriminatorColumn['fieldName']);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($classMetadata->getColumnNames() as $key => $columnName) {
|
|
||||||
$propertyName = $classMetadata->getFieldName($columnName);
|
|
||||||
$this->addFieldResult($alias, $columnName, $propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($classMetadata->associationMappings as $associationMapping) {
|
|
||||||
if ($associationMapping['isOwningSide'] && $associationMapping['type'] & ClassMetadataInfo::TO_ONE) {
|
|
||||||
foreach ($associationMapping['joinColumns'] as $joinColumn) {
|
|
||||||
$columnName = $joinColumn['name'];
|
|
||||||
$this->addMetaResult($alias, $columnName, $columnName, $classMetadata->isIdentifier($columnName));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$resultMapping = $class->getSqlResultSetMapping($queryMapping['resultSetMapping']);
|
return $this->addNamedNativeQueryResultSetMapping($class, $queryMapping['resultSetMapping']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the class mapping of the results of native SQL queries to the result set.
|
||||||
|
*
|
||||||
|
* @param ClassMetadataInfo $class
|
||||||
|
* @param string $resultClassName
|
||||||
|
* @return ResultSetMappingBuilder
|
||||||
|
*/
|
||||||
|
public function addNamedNativeQueryResultClassMapping(ClassMetadataInfo $class, $resultClassName)
|
||||||
|
{
|
||||||
|
|
||||||
|
$classMetadata = $this->em->getClassMetadata($resultClassName);
|
||||||
|
$shortName = $classMetadata->reflClass->getShortName();
|
||||||
|
$alias = strtolower($shortName[0]).'0';
|
||||||
|
|
||||||
|
$this->addEntityResult($class->name, $alias);
|
||||||
|
|
||||||
|
if ($classMetadata->discriminatorColumn) {
|
||||||
|
$discriminatorColumn = $classMetadata->discriminatorColumn;
|
||||||
|
$this->setDiscriminatorColumn($alias, $discriminatorColumn['name']);
|
||||||
|
$this->addMetaResult($alias, $discriminatorColumn['name'], $discriminatorColumn['fieldName']);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($classMetadata->getColumnNames() as $key => $columnName) {
|
||||||
|
$propertyName = $classMetadata->getFieldName($columnName);
|
||||||
|
$this->addFieldResult($alias, $columnName, $propertyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($classMetadata->associationMappings as $associationMapping) {
|
||||||
|
if ($associationMapping['isOwningSide'] && $associationMapping['type'] & ClassMetadataInfo::TO_ONE) {
|
||||||
|
foreach ($associationMapping['joinColumns'] as $joinColumn) {
|
||||||
|
$columnName = $joinColumn['name'];
|
||||||
|
$this->addMetaResult($alias, $columnName, $columnName, $classMetadata->isIdentifier($columnName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the result set mapping of the results of native SQL queries to the result set.
|
||||||
|
*
|
||||||
|
* @param ClassMetadataInfo $class
|
||||||
|
* @param string $resultSetMappingName
|
||||||
|
* @return ResultSetMappingBuilder
|
||||||
|
*/
|
||||||
|
public function addNamedNativeQueryResultSetMapping(ClassMetadataInfo $class, $resultSetMappingName)
|
||||||
|
{
|
||||||
|
$resultMapping = $class->getSqlResultSetMapping($resultSetMappingName);
|
||||||
if (isset($resultMapping['entities'])) {
|
if (isset($resultMapping['entities'])) {
|
||||||
foreach ($resultMapping['entities'] as $key => $entityMapping) {
|
foreach ($resultMapping['entities'] as $key => $entityMapping) {
|
||||||
$classMetadata = $this->em->getClassMetadata($entityMapping['entityClass']);
|
$classMetadata = $this->em->getClassMetadata($entityMapping['entityClass']);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user