Magento 2: атрибуты (attributes)
Описание флагов атрибутов (официальная документация): docs.magento.com
Некоторые полезные константы содержатся здесь: Magento/Catalog/Api/Data/EavAttributeInterface
Взять все атрибуты продуктов текущего стораuse Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory use Magento\Store\Model\StoreManagerInterface; $attributes = $this->_attributeCollectionFactory ->create() ->addHasOptionsFilter() ->addDisplayInAdvancedSearchFilter() ->addStoreLabel($this->_storeManager->getStore()->getId()) ->setOrder('main_table.attribute_id', 'asc') ->load();Обновить заначение атрибута у атрибута продукта
(не значение атрибута продукта, а значение атрибуту атрибута)
use Magento\Eav\Setup\EavSetup; $this->eavSetup->updateAttribute(Product::ENTITY, 'barcode', 'used_in_product_listing', 1);Взять атрибут у объекта любой сущности
(в данном случае кастомер)
$customerModel = $this->customerFactory->create(); $this->customerResourceModel->load($customerModel, $customerId); return $customerModel->getAdditionalPhone(); // в случае если код атрибута additional_phoneДобавить продуктовый атрибут во все атрибут-сеты (Attribute Set) продуктов
use Magento\Eav\Api\AttributeManagementInterface; use Magento\Eav\Setup\EavSetup; use Magento\Catalog\Model\Config; public const ATTRIBUTE_GROUP = 'General'; public const ATTRIBUTE_CODE = 'manufacturer'; $entityTypeId = $this->eavSetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY); $attributeSetIds = $this->eavSetup->getAllAttributeSetIds($entityTypeId); // Взять айдишники всех атрибутсетов (только для ENTITY = 'catalog_product') foreach ($attributeSetIds as $attributeSetId) { if ($attributeSetId) { $group_id = $this->config->getAttributeGroupId($attributeSetId, self::ATTRIBUTE_GROUP); $this->attributeManagement->assign( Product::ENTITY, $attributeSetId, $group_id, self::ATTRIBUTE_CODE, 999 ); } }