Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
LookupExpression.php
Go to the documentation of this file.
1 <?php
7 
11 
16 {
20  protected $resource;
21 
25  protected $adapter;
26 
30  protected $targetColumn;
31 
35  protected $targetTable;
36 
40  protected $referenceColumns;
41 
45  protected $sortOrder;
46 
54  public function __construct(
58  array $referenceColumns = [],
59  array $sortOrder = []
60  ) {
61  $this->targetTable = $targetTable;
62  $this->targetColumn = $targetColumn;
63  $this->referenceColumns = $referenceColumns;
64  $this->sortOrder = $sortOrder;
65  $this->resource = $resource;
66  $this->adapter = $this->resource->getConnection();
67  }
68 
75  protected function processWhereCondition(Select $select)
76  {
77  foreach ($this->referenceColumns as $column => $referenceColumn) {
78  $identifier = '';
79  if (isset($referenceColumn['tableAlias'])) {
80  $identifier = $referenceColumn['tableAlias'] . '.';
81  }
82  $columnName = $column;
83  if (isset($referenceColumn['columnName'])) {
84  $columnName = $referenceColumn['columnName'];
85  }
86  $select->where(
87  sprintf(
88  '%s = %s',
89  $this->adapter->quoteIdentifier('lookup.' . $column),
90  $this->adapter->quoteIdentifier($identifier . $columnName)
91  )
92  );
93  }
94  }
95 
102  protected function processSortOrder(Select $select)
103  {
104  foreach ($this->sortOrder as $direction => $column) {
105  if (!in_array($direction, [Select::SQL_ASC, Select::SQL_DESC])) {
106  $direction = '';
107  }
108  $expr = new \Zend_Db_Expr(
109  sprintf(
110  '%s %s',
111  $this->adapter->quoteIdentifier('lookup.' . $column),
112  $direction
113  )
114  );
115  $select->order($expr);
116  }
117  }
118 
124  public function __toString()
125  {
126  $select = $this->adapter->select()
127  ->from(['lookup' => $this->resource->getTableName($this->targetTable)], [$this->targetColumn])
128  ->limit(1);
130  $this->processSortOrder($select);
131  return sprintf('(%s)', $select->assemble());
132  }
133 }
const SQL_DESC
Definition: Select.php:82
__construct(ResourceConnection $resource, $targetColumn, $targetTable, array $referenceColumns=[], array $sortOrder=[])
const SQL_ASC
Definition: Select.php:81