@@ 1389-1414 (lines=26) @@ | ||
1386 | $sqlParts = []; |
|
1387 | ||
1388 | // Select all fields from the queried class |
|
1389 | foreach ($class->fieldMappings as $fieldName => $mapping) { |
|
1390 | if ($partialFieldSet && ! in_array($fieldName, $partialFieldSet)) { |
|
1391 | continue; |
|
1392 | } |
|
1393 | ||
1394 | $tableName = (isset($mapping['inherited'])) |
|
1395 | ? $this->em->getClassMetadata($mapping['inherited'])->getTableName() |
|
1396 | : $class->getTableName(); |
|
1397 | ||
1398 | $sqlTableAlias = $this->getSQLTableAlias($tableName, $dqlAlias); |
|
1399 | $columnAlias = $this->getSQLColumnAlias($mapping['columnName']); |
|
1400 | $quotedColumnName = $this->quoteStrategy->getColumnName($fieldName, $class, $this->platform); |
|
1401 | ||
1402 | $col = $sqlTableAlias . '.' . $quotedColumnName; |
|
1403 | ||
1404 | if (isset($mapping['requireSQLConversion'])) { |
|
1405 | $type = Type::getType($mapping['type']); |
|
1406 | $col = $type->convertToPHPValueSQL($col, $this->platform); |
|
1407 | } |
|
1408 | ||
1409 | $sqlParts[] = $col . ' AS '. $columnAlias; |
|
1410 | ||
1411 | $this->scalarResultAliasMap[$resultAlias][] = $columnAlias; |
|
1412 | ||
1413 | $this->rsm->addFieldResult($dqlAlias, $columnAlias, $fieldName, $class->name); |
|
1414 | } |
|
1415 | ||
1416 | // Add any additional fields of subclasses (excluding inherited fields) |
|
1417 | // 1) on Single Table Inheritance: always, since its marginal overhead |
|
@@ 1421-1446 (lines=26) @@ | ||
1418 | // 2) on Class Table Inheritance only if partial objects are disallowed, |
|
1419 | // since it requires outer joining subtables. |
|
1420 | if ($class->isInheritanceTypeSingleTable() || ! $this->query->getHint(Query::HINT_FORCE_PARTIAL_LOAD)) { |
|
1421 | foreach ($class->subClasses as $subClassName) { |
|
1422 | $subClass = $this->em->getClassMetadata($subClassName); |
|
1423 | $sqlTableAlias = $this->getSQLTableAlias($subClass->getTableName(), $dqlAlias); |
|
1424 | ||
1425 | foreach ($subClass->fieldMappings as $fieldName => $mapping) { |
|
1426 | if (isset($mapping['inherited']) || ($partialFieldSet && !in_array($fieldName, $partialFieldSet))) { |
|
1427 | continue; |
|
1428 | } |
|
1429 | ||
1430 | $columnAlias = $this->getSQLColumnAlias($mapping['columnName']); |
|
1431 | $quotedColumnName = $this->quoteStrategy->getColumnName($fieldName, $subClass, $this->platform); |
|
1432 | ||
1433 | $col = $sqlTableAlias . '.' . $quotedColumnName; |
|
1434 | ||
1435 | if (isset($mapping['requireSQLConversion'])) { |
|
1436 | $type = Type::getType($mapping['type']); |
|
1437 | $col = $type->convertToPHPValueSQL($col, $this->platform); |
|
1438 | } |
|
1439 | ||
1440 | $sqlParts[] = $col . ' AS ' . $columnAlias; |
|
1441 | ||
1442 | $this->scalarResultAliasMap[$resultAlias][] = $columnAlias; |
|
1443 | ||
1444 | $this->rsm->addFieldResult($dqlAlias, $columnAlias, $fieldName, $subClassName); |
|
1445 | } |
|
1446 | } |
|
1447 | } |
|
1448 | ||
1449 | $sql .= implode(', ', $sqlParts); |