public function addField($field, $alias = null) { if ($field instanceof ISelectExpression) { $this->addExpression($field); } else { if (is_scalar($field)) { $this->addExpression(FieldSelectExpression::create($field, $alias)); } else { if (is_array($field)) { foreach ($field as $fName => $values) { $expr = new ConcatSelectExpression(); $expr->setPropertyArray($values); $expr->setAlias($fName); $this->addExpression($expr); } } else { throw new \InvalidArgumentException("Invalid field type entered"); } } } return $this; }