diff options
Diffstat (limited to 'src/Components/Expression.php')
-rw-r--r-- | src/Components/Expression.php | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/src/Components/Expression.php b/src/Components/Expression.php index 11e7132..ad4d5e8 100644 --- a/src/Components/Expression.php +++ b/src/Components/Expression.php @@ -350,32 +350,36 @@ class Expression extends Component } /** - * @param Expression $component The component to be built. + * @param Expression|Expression[] $component The component to be built. * * @return string */ public static function build($component) { - if (!empty($component->expr)) { - $ret = $component->expr; + if (is_array($component)) { + return implode($component, ', '); } else { - $fields = array(); - if (!empty($component->database)) { - $fields[] = $component->database; - } - if (!empty($component->table)) { - $fields[] = $component->table; + if (!empty($component->expr)) { + $ret = $component->expr; + } else { + $fields = array(); + if ((isset($component->database)) && ($component->database !== '')) { + $fields[] = $component->database; + } + if ((isset($component->table)) && ($component->table !== '')) { + $fields[] = $component->table; + } + if ((isset($component->column)) && ($component->column !== '')) { + $fields[] = $component->column; + } + $ret = implode('.', Context::escape($fields)); } - if (!empty($component->column)) { - $fields[] = $component->column; + + if (!empty($component->alias)) { + $ret .= ' AS ' . Context::escape($component->alias); } - $ret = implode('.', Context::escape($fields)); - } - if (!empty($component->alias)) { - $ret .= ' AS ' . Context::escape($component->alias); + return $ret; } - - return $ret; } } |