11 class Helper extends \Magento\Framework\DB\Helper\AbstractHelper
28 foreach ($selectOrders as $term) {
29 if (is_array($term)) {
30 if (!is_numeric($term[0])) {
34 if (!is_numeric($term)) {
61 if (!is_numeric($field) && (strpos($field,
'.') !==
false)) {
62 $size = strpos($field,
'.');
64 $string = substr($field, 0, $size);
66 $string = substr($field, $size + 1);
88 foreach ($selectGroups as $term) {
89 $groups[] = $this->
getConnection()->quoteIdentifier($term,
true);
110 if (!$selectHavings) {
116 foreach (
$columns as $columnEntry) {
117 $correlationName = (string)$columnEntry[1];
118 $column = $columnEntry[2];
119 foreach ($selectHavings as $having) {
123 if (strpos($having, $correlationName) !==
false) {
124 if (is_string($column)) {
128 $havings[] = str_replace($correlationName, $column, $having);
130 throw new \Zend_Db_Exception(
131 sprintf(
"Can't prepare expression without column alias: '%s'", $correlationName)
155 if ($limitCount !==
null) {
156 $limitCount = intval($limitCount);
157 if ($limitCount <= 0) {
161 $limitOffset = intval($limitOffset);
162 if ($limitOffset < 0) {
166 if ($limitOffset + $limitCount != $limitOffset + 1) {
168 foreach ($columnList as $columnEntry) {
169 $columns[] = $columnEntry[2] ? $columnEntry[2] : $columnEntry[1];
171 $query = sprintf(
'%s LIMIT %s, %s',
$query, $limitCount, $limitOffset);
196 $preparedColumns = [];
198 foreach (
$columns as $columnEntry) {
199 list($correlationName, $column,
$alias) = $columnEntry;
202 if (preg_match(
'/(^|[^a-zA-Z_])^(SELECT)?(SUM|MIN|MAX|AVG|COUNT)\s*\(/i', $column)) {
203 $column = new \Zend_Db_Expr($column);
205 $preparedColumns[strtoupper(
$alias)] = [
null, $column,
$alias];
207 throw new \Zend_Db_Exception(
"Can't prepare expression without alias");
211 if ($tables[$correlationName][
'tableName'] instanceof \
Zend_Db_Expr) {
212 throw new \Zend_Db_Exception(
213 "Can't prepare expression when tableName is instance of \Zend_Db_Expr" 216 $tableColumns = $this->
getConnection()->describeTable($tables[$correlationName][
'tableName']);
217 foreach (array_keys($tableColumns) as $col) {
218 $preparedColumns[strtoupper($col)] = [$correlationName, $col,
null];
222 $preparedColumns[strtoupper($columnKey)] = [$correlationName, $column,
$alias];
227 return $preparedColumns;
245 $groupConcatDelimiter =
',',
246 $fieldsDelimiter =
'',
247 $additionalWhere =
'' 254 if ($additionalWhere) {
255 $fieldExpr = $this->
getConnection()->getCheckSql($additionalWhere, $fieldExpr,
"''");
258 if ($groupConcatDelimiter) {
259 $separator = sprintf(
" SEPARATOR '%s'", $groupConcatDelimiter);
261 $select->columns([$fieldAlias =>
new \
Zend_Db_Expr(sprintf(
'GROUP_CONCAT(%s%s)', $fieldExpr, $separator))]);
274 $dateDiff =
'(TO_DAYS(' . $endDate .
') - TO_DAYS(' . $startDate .
'))';
275 return new \Zend_Db_Expr($dateDiff);
prepareColumnsList(\Magento\Framework\DB\Select $select, $groupByCondition=null)
escapeLikeValue($value, $options=[])
_prepareOrder(\Magento\Framework\DB\Select $select, $autoReset=false)
_truncateAliasName($field, $reverse=false)
addLikeEscape($value, $options=[])
_assembleLimit($query, $limitCount, $limitOffset, $columnList=[])
_prepareHaving(\Magento\Framework\DB\Select $select, $autoReset=false)
addGroupConcatColumn( $select, $fieldAlias, $fields, $groupConcatDelimiter=',', $fieldsDelimiter='', $additionalWhere='')
getDateDiff($startDate, $endDate)
_prepareGroup(\Magento\Framework\DB\Select $select, $autoReset=false)