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