Exemplo n.º 1
0
 public function getResultSpecifier()
 {
     $resultSpecifier = new ResultSpecifier();
     $resultColumn = new ResultColumnSpecifier();
     foreach ($this->getColumns() as $alias => $column) {
         switch (true) {
             case $column instanceof Column:
                 $resultColumn->setSchemaSourceColumn($column);
                 $resultColumn->setName($column->getColumn());
                 break;
             case $column === '*':
                 $resultColumn->setSchemaSourceJoker();
                 $resultColumn->setIsAllColumnsFromTable(true);
                 break;
             case $column instanceof Table:
                 $resultColumn->setSchemaSourceTable($column);
                 $resultColumn->setIsAllColumnsFromTable(true);
                 break;
             case $column instanceof Select:
                 $Specifier = $column->getResultSpecifier();
                 if (count($Specifier->getColumns()) !== 1) {
                     throw new MalformedSqlException("Wrong column count in sub-select!");
                 }
                 $resultColumn = reset($Specifier->getColumns());
                 break;
             case $column instanceof ValuePart:
                 $resultColumn->setSchemaSourceValue($column);
                 break;
         }
         if (is_string($alias)) {
             $resultColumn->setName($alias);
         }
         $resultSpecifier->addColumn(clone $resultColumn);
     }
     return $resultSpecifier;
 }