adapter = $resource->getConnection(); $this->columns = $columns; $this->separator = $separator; } /** * Returns SQL expression * TRIM(CONCAT_WS(separator, IF(str1 <> '', str1, NULL), IF(str2 <> '', str2, NULL) ...)) * * @return string */ public function __toString() { $columns = []; foreach ($this->columns as $key => $part) { if (isset($part['columnName']) && $part['columnName'] instanceof \Zend_Db_Expr) { $column = $part['columnName']; } else { $column = $this->adapter->quoteIdentifier( (isset($part['tableAlias']) ? $part['tableAlias'] . '.' : '') . (isset($part['columnName']) ? $part['columnName'] : $key) ); } $columns[] = $this->adapter->getCheckSql($column . " <> ''", $column, 'NULL'); } return sprintf( 'TRIM(%s)', $this->adapter->getConcatSql($columns, $this->separator) ); } }