Получение значения атрибута раскрывающегося списка при использовании addAttributeToSelect

magento.stackexchange https://magento.stackexchange.com//questions/29167

  •  11-12-2019
  •  | 
  •  

Вопрос

При загрузке коллекции, как я могу получить текст значения атрибута (а не только номер опции), если это атрибут раскрывающегося списка.

Пример:

$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color'); // color  is a dropdown attribute

При использовании этого кода идентификаторы опций отображаются для color такой как:123, 117 и т. д.а не текстовые значения (например:красный, зеленый и т. д.)

Обычно мы перебираем каждый продукт и получаем текст атрибута, но поскольку он используется в Каталог->Управление продуктами page Я ищу альтернативное решение.

Это было полезно?

Решение

Я предполагаю, что вы сначала используете Mage_Catalog_Model_Resource_Product_Collection а не просто ресурс, как указано в вашем вопросе.

Теперь я также предполагаю, что вы просматриваете результаты своей коллекции.

foreach($collection as $product) {}

Если у вас есть объект продукта, вы можете вызвать функцию getAttributeText и укажите код атрибута.Это загрузит атрибут, получит источник, а затем текст опции на основе данных атрибута, назначенных продукту.

public function getAttributeText($attributeCode)
{
return $this->getResource()
    ->getAttribute($attributeCode)
        ->getSource()
            ->getOptionText($this->getData($attributeCode));
}

Итак, если вы просматриваете свою коллекцию, вам нужно просто позвонить:

foreach ($collection as $product) {
    $color_value = $product->getAttributeText('color');
}

Другие советы

Попробуйте добавить «_Value» после того, как имя атрибута такое:

$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color_value'); // color  is a dropdown attribute
.

Если вы используете плоские таблицы для продуктов, вы можете посмотреть в таблицу базы данных Catalog_Product_flat_1, чтобы увидеть доступные атрибуты, я полагаю.

Вам нужно отсортировать по значениям?Если нет, вы можете выбрать все параметры атрибутов в виде хэша $colors с одним (!) Запрос, а затем отображать их в виде $colors[$product->getColor()]

Возможно, это быстрее, чем выберите каждое значение в цикле или сделать дополнительные соединения, но не работает для сортировки сбора: (

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top