コード例 #1
0
 /**
  * {@inheritdoc} 
  */
 protected function getSelectColumnsSQL()
 {
     if ($this->selectColumnListSql !== null) {
         return $this->selectColumnListSql;
     }
     $columnList[] = parent::getSelectColumnsSQL();
     $rootClass = $this->em->getClassMetadata($this->class->rootEntityName);
     $tableAlias = $this->getSQLTableAlias($rootClass->name);
     // Append discriminator column
     $discrColumn = $this->class->discriminatorColumn['name'];
     $columnList[] = $tableAlias . '.' . $discrColumn;
     $resultColumnName = $this->platform->getSQLResultCasing($discrColumn);
     $this->rsm->setDiscriminatorColumn('r', $resultColumnName);
     $this->rsm->addMetaResult('r', $resultColumnName, $discrColumn);
     // Append subclass columns
     foreach ($this->class->subClasses as $subClassName) {
         $subClass = $this->em->getClassMetadata($subClassName);
         // Regular columns
         foreach ($subClass->fieldMappings as $fieldName => $mapping) {
             if (isset($mapping['inherited'])) {
                 continue;
             }
             $columnList[] = $this->getSelectColumnSQL($fieldName, $subClass);
         }
         // Foreign key columns
         foreach ($subClass->associationMappings as $assoc) {
             if (!$assoc['isOwningSide'] || !($assoc['type'] & ClassMetadata::TO_ONE) || isset($assoc['inherited'])) {
                 continue;
             }
             foreach ($assoc['targetToSourceKeyColumns'] as $srcColumn) {
                 $className = isset($assoc['inherited']) ? $assoc['inherited'] : $this->class->name;
                 $columnList[] = $this->getSelectJoinColumnSQL($tableAlias, $srcColumn, $className);
             }
         }
     }
     $this->selectColumnListSql = implode(', ', $columnList);
     return $this->selectColumnListSql;
 }