6 declare(strict_types=1);
25 private $resourceConnection;
38 \
Magento\Framework\
App\ResourceConnection $resourceConnection
55 $tableAlias =
'ca_' .
$attribute->getAttributeCode();
58 $conditionValue = $this->mapConditionValue($conditionType, $filter->
getValue());
61 $attributeSelect = $this->resourceConnection->getConnection()
64 [$tableAlias =>
$attribute->getBackendTable()],
65 $tableAlias .
'.' .
$attribute->getEntityIdField()
67 $this->resourceConnection->getConnection()->prepareSqlCondition(
68 $tableAlias .
'.' .
$attribute->getIdFieldName(),
72 $this->resourceConnection->getConnection()->prepareSqlCondition(
73 $tableAlias .
'.value',
74 [$conditionType => $conditionValue]
78 return $this->resourceConnection
80 ->prepareSqlCondition(
83 'in' => $attributeSelect
93 private function getAttributeByCode(
string $field):
Attribute 104 private function mapConditionType(
string $conditionType): string
111 return isset($conditionsMap[$conditionType]) ? $conditionsMap[$conditionType] : $conditionType;
121 private function mapConditionValue(
string $conditionType,
string $conditionValue): string
123 $conditionsMap = [
'like',
'nlike'];
125 if (in_array($conditionType, $conditionsMap)) {
126 $conditionValue =
'%' . $conditionValue .
'%';
129 return $conditionValue;
__construct(\Magento\Eav\Model\Config $eavConfig, \Magento\Framework\App\ResourceConnection $resourceConnection)