Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Attributes
AbstractCriteria Class Reference
Inheritance diagram for AbstractCriteria:
CriteriaInterface StockItemCriteria StockStatusCriteria StockCriteria Sample

Public Member Functions

 getMapperInterfaceName ()
 
 addField ($field, $alias=null)
 
 addFilter ($name, $field, $condition=null, $type='and')
 
 addOrder ($field, $direction=self::SORT_ORDER_DESC, $unShift=false)
 
 setLimit ($offset, $size)
 
 removeField ($field, $isAlias=false)
 
 removeAllFields ()
 
 removeFilter ($name)
 
 removeAllFilters ()
 
 getCriteriaList ()
 
 getFilters ()
 
 getOrders ()
 
 getLimit ()
 
 getPart ($name, $default=null)
 
 toArray ()
 
 reset ()
 

Protected Attributes

 $data
 
 $mapperInterfaceName
 

Additional Inherited Members

- Data Fields inherited from CriteriaInterface
const PART_FIELDS = 'fields'
 
const PART_FILTERS = 'filters'
 
const PART_ORDERS = 'orders'
 
const PART_CRITERIA_LIST = 'criteria_list'
 
const PART_LIMIT = 'limit'
 
const SORT_ORDER_ASC = 'ASC'
 
const SORT_ORDER_DESC = 'DESC'
 

Detailed Description

Class AbstractCriteria

Definition at line 13 of file AbstractCriteria.php.

Member Function Documentation

◆ addField()

addField (   $field,
  $alias = null 
)

Add field to select

Parameters
string | array$field
string | null$alias
Returns
void

Implements CriteriaInterface.

Definition at line 56 of file AbstractCriteria.php.

57  {
58  if ($field === '*') {
59  $this->data[self::PART_FIELDS]['list'] = [$field];
60  } else {
61  if (is_array($field)) {
62  foreach ($field as $key => $value) {
63  $this->addField($value, is_string($key) ? $key : null);
64  }
65  } else {
66  if ($alias === null) {
67  $this->data[self::PART_FIELDS]['list'][$field] = $field;
68  } else {
69  $this->data[self::PART_FIELDS]['list'][$alias] = $field;
70  }
71  }
72  }
73  }
$value
Definition: gender.phtml:16
if(!trim($html)) $alias
Definition: details.phtml:20

◆ addFilter()

addFilter (   $name,
  $field,
  $condition = null,
  $type = 'and' 
)

Add field filter to collection

If $condition integer or string - exact value will be filtered ('eq' condition)

If $condition is array - one of the following structures is expected:

  • ["from" => $fromValue, "to" => $toValue]
  • ["eq" => $equalValue]
  • ["neq" => $notEqualValue]
  • ["like" => $likeValue]
  • ["in" => [$inValues]]
  • ["nin" => [$notInValues]]
  • ["notnull" => $valueIsNotNull]
  • ["null" => $valueIsNull]
  • ["moreq" => $moreOrEqualValue]
  • ["gt" => $greaterValue]
  • ["lt" => $lessValue]
  • ["gteq" => $greaterOrEqualValue]
  • ["lteq" => $lessOrEqualValue]
  • ["finset" => $valueInSet]
If non matched - sequential parallel arrays are expected and OR conditions
will be built using above mentioned structure.
Example:
$field = ['age', 'name'];
$condition = [42, ['like' => 'Mage']];
$type = 'or';

The above would find where age equal to 42 OR name like Mage%.

Parameters
string$name
string | array$field
string | int | array$condition
string$type
Exceptions

Implements CriteriaInterface.

Definition at line 116 of file AbstractCriteria.php.

117  {
118  if (isset($this->data[self::PART_FILTERS]['list'][$name])) {
119  throw new \Exception(
120  (string)new \Magento\Framework\Phrase(
121  'Filter already exists in Criteria object: %1',
122  [$name]
123  )
124  );
125  }
126  $filter = new DataObject();
127  // implements ArrayAccess
128  $filter['name'] = $name;
129  $filter['field'] = $field;
130  $filter['condition'] = $condition;
131  $filter['type'] = strtolower($type);
132  $this->data[self::PART_FILTERS]['list'][$name] = $filter;
133  }
$type
Definition: item.phtml:13
if(!isset($_GET['name'])) $name
Definition: log.php:14

◆ addOrder()

addOrder (   $field,
  $direction = self::SORT_ORDER_DESC,
  $unShift = false 
)

self::setOrder() alias

Parameters
string$field
string$direction
bool$unShift
Returns
void

Implements CriteriaInterface.

Definition at line 143 of file AbstractCriteria.php.

144  {
145  $direction = strtoupper($direction) == self::SORT_ORDER_ASC ? self::SORT_ORDER_ASC : self::SORT_ORDER_DESC;
146  unset($this->data[self::PART_ORDERS]['list'][$field]);
147  // avoid ordering by the same field twice
148  if ($unShift) {
149  $orders = [$field => $direction];
150  foreach ($this->data[self::PART_ORDERS]['list'] as $key => $dir) {
151  $orders[$key] = $dir;
152  }
153  $this->data[self::PART_ORDERS]['list'] = $orders;
154  } else {
155  $this->data[self::PART_ORDERS]['list'][$field] = $direction;
156  }
157  }

◆ getCriteriaList()

getCriteriaList ( )

Get Criteria objects added to current Composite Criteria

Returns
array

Implements CriteriaInterface.

Definition at line 232 of file AbstractCriteria.php.

233  {
234  return $this->data[self::PART_CRITERIA_LIST]['list'];
235  }

◆ getFilters()

getFilters ( )

Get list of filters

Returns
array

Implements CriteriaInterface.

Definition at line 242 of file AbstractCriteria.php.

243  {
244  return $this->data[self::PART_FILTERS]['list'];
245  }

◆ getLimit()

getLimit ( )

Get limit (['offset', 'page'])

Returns
array

Implements CriteriaInterface.

Definition at line 263 of file AbstractCriteria.php.

264  {
265  return $this->data[self::PART_LIMIT];
266  }

◆ getMapperInterfaceName()

getMapperInterfaceName ( )

Get associated Mapper Interface name

Exceptions

Implements CriteriaInterface.

Definition at line 36 of file AbstractCriteria.php.

37  {
38  if (!$this->mapperInterfaceName) {
39  throw new \Exception(
40  (string)new \Magento\Framework\Phrase(
41  'Missed Mapper Interface for Criteria Interface: %1',
42  [get_class($this)]
43  )
44  );
45  }
47  }

◆ getOrders()

getOrders ( )

Get ordering criteria

Returns
array

Implements CriteriaInterface.

Definition at line 252 of file AbstractCriteria.php.

253  {
254  return $this->data[self::PART_ORDERS]['list'];
255  }

◆ getPart()

getPart (   $name,
  $default = null 
)

Retrieve criteria part

Parameters
string$name
mixed$default
Returns
mixed

Implements CriteriaInterface.

Definition at line 275 of file AbstractCriteria.php.

276  {
277  return $this->data[$name] ?? $default;
278  }
if(!isset($_GET['name'])) $name
Definition: log.php:14

◆ removeAllFields()

removeAllFields ( )

Removes all fields from select

Returns
void

Implements CriteriaInterface.

Definition at line 199 of file AbstractCriteria.php.

200  {
201  $this->data[self::PART_FIELDS]['list'] = [];
202  }

◆ removeAllFilters()

removeAllFilters ( )

Removes all filters

Returns
void

Implements CriteriaInterface.

Definition at line 222 of file AbstractCriteria.php.

223  {
224  $this->data[self::PART_FILTERS]['list'] = [];
225  }

◆ removeField()

removeField (   $field,
  $isAlias = false 
)

Removes field from select

Parameters
string | null$field
bool$isAliasAlias identifier
Returns
void

Implements CriteriaInterface.

Definition at line 178 of file AbstractCriteria.php.

179  {
180  if ($isAlias) {
181  if (isset($this->data[self::PART_FIELDS]['list'][$field])) {
182  unset($this->data[self::PART_FIELDS]['list'][$field]);
183  }
184  } else {
185  foreach ($this->data[self::PART_FIELDS]['list'] as $key => $value) {
186  if ($value === $field) {
187  unset($this->data[self::PART_FIELDS]['list'][$key]);
188  break;
189  }
190  }
191  }
192  }
$value
Definition: gender.phtml:16

◆ removeFilter()

removeFilter (   $name)

Removes filter by name

Parameters
string$name
Returns
void

Implements CriteriaInterface.

Definition at line 210 of file AbstractCriteria.php.

211  {
212  if (isset($this->data[self::PART_FILTERS]['list'][$name])) {
213  unset($this->data[self::PART_FILTERS]['list'][$name]);
214  }
215  }
if(!isset($_GET['name'])) $name
Definition: log.php:14

◆ reset()

reset ( )

Reset criteria

Returns
void

Implements CriteriaInterface.

Definition at line 295 of file AbstractCriteria.php.

296  {
297  $this->data = [
298  self::PART_FIELDS => ['list' => []],
299  self::PART_FILTERS => ['list' => []],
300  self::PART_ORDERS => ['list' => []],
301  self::PART_CRITERIA_LIST => ['list' => []],
302  ];
303  }

◆ setLimit()

setLimit (   $offset,
  $size 
)

Set Query limit

Parameters
int$offset
int$size
Returns
void

Implements CriteriaInterface.

Definition at line 166 of file AbstractCriteria.php.

167  {
168  $this->data[self::PART_LIMIT] = [$offset, $size];
169  }

◆ toArray()

toArray ( )

Return all criteria parts as array

Returns
array

Implements CriteriaInterface.

Definition at line 285 of file AbstractCriteria.php.

Field Documentation

◆ $data

$data
protected
Initial value:
= [
self::PART_FIELDS => ['list' => []],
self::PART_FILTERS => ['list' => []],
self::PART_ORDERS => ['list' => []],
self::PART_CRITERIA_LIST => ['list' => []],
]

Definition at line 18 of file AbstractCriteria.php.

◆ $mapperInterfaceName

$mapperInterfaceName
protected

Definition at line 28 of file AbstractCriteria.php.


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