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