Jak już wiecie, mieliśmy w Magento tę metodę poniżej, aby zapisać określoną wartość atrybutu taką jak ta.
// saving product attribute
$product = Mage::getModel('catalog/product')->load('id here');
$product->setName('your name here');
$product->getResource()->saveAttribute($product, 'name');
lub
// saving customer attribute
$customer->setData($attrCode, $value)->getResource()->saveAttribute($customer, $attrCode);
Czy ktoś może dać mi znać alternatywę powyższego w Magento2 .
magento-1.9
magento2
magento-2.1
Kingshuk Deb
źródło
źródło
Magento\Eav\Model\Entity\AbstractEntity::saveAttribute()
co zaakceptuje obiekt danych i kod encji.public function saveAttribute(\Magento\Framework\DataObject $object, $attributeCode)
Aby wyjaśnić odpowiedź Jaimin:
To nie jest prawda. Będzie działać tylko dla podmiotów EAV, które rozszerzają
Magento\Eav\Model\Entity\AbstractEntity
Jeśli masz do czynienia z podmiotem spoza EAV, w którym rozszerza się model zasobów
Magento\Framework\Model\ResourceModel\Db\AbstractDb
, będziesz musiał zaimplementować tęsaveAttribute
metodę w swoim modelu zasobów.W Magento 2 zrobili to dla
Magento\Sales\Model\ResourceModel\Attribute
klasy:źródło
W przypadku produktu można użyć obiektu akcji masowej. Na przykład:
źródło