Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions
Helper Class Reference
Inheritance diagram for Helper:
AbstractHelper Helper Helper Helper Helper Helper Helper

Public Member Functions

 prepareColumnsList (\Magento\Framework\DB\Select $select, $groupByCondition=null)
 
 addGroupConcatColumn ( $select, $fieldAlias, $fields, $groupConcatDelimiter=',', $fieldsDelimiter='', $additionalWhere='')
 
 getDateDiff ($startDate, $endDate)
 
 addLikeEscape ($value, $options=[])
 
- Public Member Functions inherited from AbstractHelper
 __construct (\Magento\Framework\App\ResourceConnection $resource, $modulePrefix)
 
 escapeLikeValue ($value, $options=[])
 
 addLikeEscape ($value, $options=[])
 
 getCILike ($field, $value, $options=[])
 

Protected Member Functions

 _prepareOrder (\Magento\Framework\DB\Select $select, $autoReset=false)
 
 _truncateAliasName ($field, $reverse=false)
 
 _prepareGroup (\Magento\Framework\DB\Select $select, $autoReset=false)
 
 _prepareHaving (\Magento\Framework\DB\Select $select, $autoReset=false)
 
 _assembleLimit ($query, $limitCount, $limitOffset, $columnList=[])
 
- Protected Member Functions inherited from AbstractHelper
 getConnection ()
 

Additional Inherited Members

- Protected Attributes inherited from AbstractHelper
 $_modulePrefix
 
 $_resource
 

Detailed Description

Definition at line 11 of file Helper.php.

Member Function Documentation

◆ _assembleLimit()

_assembleLimit (   $query,
  $limitCount,
  $limitOffset,
  $columnList = [] 
)
protected
Parameters
string$query
int$limitCount
int$limitOffset
array$columnList
Returns
string

Definition at line 153 of file Helper.php.

154  {
155  if ($limitCount !== null) {
156  $limitCount = intval($limitCount);
157  if ($limitCount <= 0) {
158  //throw new \Exception("LIMIT argument count={$limitCount} is not valid");
159  }
160 
161  $limitOffset = intval($limitOffset);
162  if ($limitOffset < 0) {
163  //throw new \Exception("LIMIT argument offset={$limitOffset} is not valid");
164  }
165 
166  if ($limitOffset + $limitCount != $limitOffset + 1) {
167  $columns = [];
168  foreach ($columnList as $columnEntry) {
169  $columns[] = $columnEntry[2] ? $columnEntry[2] : $columnEntry[1];
170  }
171  $query = sprintf('%s LIMIT %s, %s', $query, $limitCount, $limitOffset);
172  }
173  }
174 
175  return $query;
176  }
$columns
Definition: default.phtml:15

◆ _prepareGroup()

_prepareGroup ( \Magento\Framework\DB\Select  $select,
  $autoReset = false 
)
protected

Returns quoted group by fields

Parameters
\Magento\Framework\DB\Select$select
bool$autoReset
Returns
array

Definition at line 80 of file Helper.php.

81  {
82  $selectGroups = $select->getPart(\Magento\Framework\DB\Select::GROUP);
83  if (!$selectGroups) {
84  return [];
85  }
86 
87  $groups = [];
88  foreach ($selectGroups as $term) {
89  $groups[] = $this->getConnection()->quoteIdentifier($term, true);
90  }
91 
92  if ($autoReset) {
93  $select->reset(\Magento\Framework\DB\Select::GROUP);
94  }
95 
96  return $groups;
97  }
const GROUP
Definition: Select.php:52

◆ _prepareHaving()

_prepareHaving ( \Magento\Framework\DB\Select  $select,
  $autoReset = false 
)
protected

Prepare and returns having array

Parameters
\Magento\Framework\DB\Select$select
bool$autoReset
Returns
array
Exceptions

Looking for column expression in the having clause

Replace column expression to column alias in having clause

Definition at line 107 of file Helper.php.

108  {
109  $selectHavings = $select->getPart(\Magento\Framework\DB\Select::HAVING);
110  if (!$selectHavings) {
111  return [];
112  }
113 
114  $havings = [];
115  $columns = $select->getPart(\Magento\Framework\DB\Select::COLUMNS);
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);
129  } else {
130  throw new \Zend_Db_Exception(
131  sprintf("Can't prepare expression without column alias: '%s'", $correlationName)
132  );
133  }
134  }
135  }
136  }
137 
138  if ($autoReset) {
139  $select->reset(\Magento\Framework\DB\Select::HAVING);
140  }
141 
142  return $havings;
143  }
const HAVING
Definition: Select.php:53
$columns
Definition: default.phtml:15
const COLUMNS
Definition: Select.php:48

◆ _prepareOrder()

_prepareOrder ( \Magento\Framework\DB\Select  $select,
  $autoReset = false 
)
protected

Returns array of quoted orders with direction

Parameters
\Magento\Framework\DB\Select$select
bool$autoReset
Returns
array

Definition at line 20 of file Helper.php.

21  {
22  $selectOrders = $select->getPart(\Magento\Framework\DB\Select::ORDER);
23  if (!$selectOrders) {
24  return [];
25  }
26 
27  $orders = [];
28  foreach ($selectOrders as $term) {
29  if (is_array($term)) {
30  if (!is_numeric($term[0])) {
31  $orders[] = sprintf('%s %s', $this->getConnection()->quoteIdentifier($term[0], true), $term[1]);
32  }
33  } else {
34  if (!is_numeric($term)) {
35  $orders[] = $this->getConnection()->quoteIdentifier($term, true);
36  }
37  }
38  }
39 
40  if ($autoReset) {
41  $select->reset(\Magento\Framework\DB\Select::ORDER);
42  }
43 
44  return $orders;
45  }
const ORDER
Definition: Select.php:54

◆ _truncateAliasName()

_truncateAliasName (   $field,
  $reverse = false 
)
protected

Truncate alias name from field.

Result string depends from second optional argument $reverse which can be true if you need the first part of the field. Field can be with 'dot' delimiter.

Parameters
string$field
bool$reverseOPTIONAL
Returns
string

Definition at line 58 of file Helper.php.

59  {
60  $string = $field;
61  if (!is_numeric($field) && (strpos($field, '.') !== false)) {
62  $size = strpos($field, '.');
63  if ($reverse) {
64  $string = substr($field, 0, $size);
65  } else {
66  $string = substr($field, $size + 1);
67  }
68  }
69 
70  return $string;
71  }

◆ addGroupConcatColumn()

addGroupConcatColumn (   $select,
  $fieldAlias,
  $fields,
  $groupConcatDelimiter = ',',
  $fieldsDelimiter = '',
  $additionalWhere = '' 
)

Add prepared column group_concat expression

Parameters
\Magento\Framework\DB\Select$select
string$fieldAliasField alias which will be added with column group_concat expression
string$fields
string$groupConcatDelimiter
string$fieldsDelimiter
string$additionalWhere
Returns
\Magento\Framework\DB\Select

Definition at line 241 of file Helper.php.

248  {
249  if (is_array($fields)) {
250  $fieldExpr = $this->getConnection()->getConcatSql($fields, $fieldsDelimiter);
251  } else {
252  $fieldExpr = $fields;
253  }
254  if ($additionalWhere) {
255  $fieldExpr = $this->getConnection()->getCheckSql($additionalWhere, $fieldExpr, "''");
256  }
257  $separator = '';
258  if ($groupConcatDelimiter) {
259  $separator = sprintf(" SEPARATOR '%s'", $groupConcatDelimiter);
260  }
261  $select->columns([$fieldAlias => new \Zend_Db_Expr(sprintf('GROUP_CONCAT(%s%s)', $fieldExpr, $separator))]);
262  return $select;
263  }
$fields
Definition: details.phtml:14

◆ addLikeEscape()

addLikeEscape (   $value,
  $options = [] 
)

Escapes and quotes LIKE value. Stating escape symbol in expression is not required, because we use standard MySQL escape symbol. For options and escaping see escapeLikeValue().

Parameters
string$value
array$options
Returns
\Zend_Db_Expr
See also
escapeLikeValue()

Definition at line 289 of file Helper.php.

290  {
292  return new \Zend_Db_Expr($this->getConnection()->quote($value));
293  }
$value
Definition: gender.phtml:16

◆ getDateDiff()

getDateDiff (   $startDate,
  $endDate 
)

Returns expression of days passed from $startDate to $endDate

Parameters
string | \Zend_Db_Expr$startDate
string | \Zend_Db_Expr$endDate
Returns
\Zend_Db_Expr

Definition at line 272 of file Helper.php.

273  {
274  $dateDiff = '(TO_DAYS(' . $endDate . ') - TO_DAYS(' . $startDate . '))';
275  return new \Zend_Db_Expr($dateDiff);
276  }

◆ prepareColumnsList()

prepareColumnsList ( \Magento\Framework\DB\Select  $select,
  $groupByCondition = null 
)

Prepare select column list

Parameters
\Magento\Framework\DB\Select$select
string | null$groupByConditionOPTIONAL
Returns
mixed|array
Exceptions

Definition at line 188 of file Helper.php.

189  {
190  if (!count($select->getPart(\Magento\Framework\DB\Select::FROM))) {
191  return $select->getPart(\Magento\Framework\DB\Select::COLUMNS);
192  }
193 
194  $columns = $select->getPart(\Magento\Framework\DB\Select::COLUMNS);
195  $tables = $select->getPart(\Magento\Framework\DB\Select::FROM);
196  $preparedColumns = [];
197 
198  foreach ($columns as $columnEntry) {
199  list($correlationName, $column, $alias) = $columnEntry;
200  if ($column instanceof \Zend_Db_Expr) {
201  if ($alias !== null) {
202  if (preg_match('/(^|[^a-zA-Z_])^(SELECT)?(SUM|MIN|MAX|AVG|COUNT)\s*\(/i', $column)) {
203  $column = new \Zend_Db_Expr($column);
204  }
205  $preparedColumns[strtoupper($alias)] = [null, $column, $alias];
206  } else {
207  throw new \Zend_Db_Exception("Can't prepare expression without alias");
208  }
209  } else {
210  if ($column == \Magento\Framework\DB\Select::SQL_WILDCARD) {
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"
214  );
215  }
216  $tableColumns = $this->getConnection()->describeTable($tables[$correlationName]['tableName']);
217  foreach (array_keys($tableColumns) as $col) {
218  $preparedColumns[strtoupper($col)] = [$correlationName, $col, null];
219  }
220  } else {
221  $columnKey = $alias === null ? $column : $alias;
222  $preparedColumns[strtoupper($columnKey)] = [$correlationName, $column, $alias];
223  }
224  }
225  }
226 
227  return $preparedColumns;
228  }
const FROM
Definition: Select.php:49
$columns
Definition: default.phtml:15
const SQL_WILDCARD
Definition: Select.php:66
const COLUMNS
Definition: Select.php:48
if(!trim($html)) $alias
Definition: details.phtml:20

The documentation for this class was generated from the following file: