Exemplo n.º 1
0
 /**
  * @param string $columnName
  * @param array $joinIds
  */
 protected function addColumnAliasesForVirtualRelation($columnName, array $joinIds)
 {
     if (!empty($this->virtualColumnExpressions[$columnName])) {
         return;
     }
     if (!$this->virtualRelationsJoins) {
         return;
     }
     $hasVirtualRelation = false;
     foreach ($joinIds as $columnJoinId) {
         $hasVirtualRelation = $hasVirtualRelation || array_search($columnJoinId, $this->virtualRelationsJoins);
     }
     if (!$hasVirtualRelation) {
         return;
     }
     $parentJoinId = $this->getParentJoinIdentifier($this->joinIdHelper->buildColumnJoinIdentifier($columnName));
     $fieldName = $this->getFieldName($parentJoinId);
     $className = $this->getEntityClassName($parentJoinId);
     if ($this->virtualRelationProvider->isVirtualRelation($className, $fieldName)) {
         $tableAlias = $this->aliases[$this->virtualRelationProvider->getTargetJoinAlias($className, $fieldName, $this->getFieldName($columnName))];
     } else {
         $joinId = end($joinIds);
         $tableAlias = $this->tableAliases[$joinId];
     }
     $this->virtualColumnExpressions[$columnName] = sprintf('%s.%s', $tableAlias, $this->getFieldName($columnName));
 }