|
@@ 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); |