summaryrefslogtreecommitdiffstats
path: root/src/Components/Expression.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Components/Expression.php')
-rw-r--r--src/Components/Expression.php38
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;
}
}