![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/DB/Sql/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\DB\Sql; use Magento\Framework\App\ResourceConnection; use Magento\Framework\DB\Adapter\AdapterInterface; /** * Class Concat */ class ConcatExpression extends Expression { /** * @var AdapterInterface */ protected $adapter; /** * @var string[] */ protected $columns; /** * @var string */ protected $separator; /** * @param ResourceConnection $resource * @param array $columns * @param string $separator */ public function __construct( ResourceConnection $resource, array $columns, $separator = ' ' ) { $this->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) ); } }