diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/Source/Table.php b/app/code/Magento/Eav/Model/Entity/Attribute/Source/Table.php index b9139c6fff0ff..a11ede7ac37be 100644 --- a/app/code/Magento/Eav/Model/Entity/Attribute/Source/Table.php +++ b/app/code/Magento/Eav/Model/Entity/Attribute/Source/Table.php @@ -103,19 +103,25 @@ public function getAllOptions($withEmpty = true, $defaultValues = false) * @param bool $withEmpty Add empty option to array * @return array */ - public function getSpecificOptions($ids, $withEmpty = true) + public function getSpecificOptions($ids, $withEmpty = true) { - $options = $this->_attrOptionCollectionFactory->create() - ->setPositionOrder('asc') - ->setAttributeFilter($this->getAttribute()->getId()) - ->addFieldToFilter('main_table.option_id', ['in' => $ids]) - ->setStoreFilter($this->getAttribute()->getStoreId()) - ->load() - ->toOptionArray(); + $allOptions = $this->getAllOptions(false); + $specificOptions = []; + if (is_string($ids) && strpos($ids, ',') !== false) { + $ids = explode(',', $ids); + } + if (!is_array($ids)) { + $ids = (array)$ids; + } + foreach ($allOptions as $option) { + if (isset($option['value']) && in_array($option['value'], $ids)) { + $specificOptions[] = $option; + } + } if ($withEmpty) { - $options = $this->addEmptyOption($options); + $specificOptions = $this->addEmptyOption($specificOptions); } - return $options; + return $specificOptions; } /**