सिर्फ जैमिन का जवाब स्पष्ट करने के लिए:
यह किसी भी इकाई के लिए काम करेगा।
यह सच नहीं है। यह केवल ईएवी संस्थाओं के लिए काम करेगा जो विस्तार करते हैंMagento\Eav\Model\Entity\AbstractEntity
यदि आप एक गैर ईएवी इकाई के साथ काम कर रहे हैं जहाँ संसाधन मॉडल का विस्तार होता है Magento\Framework\Model\ResourceModel\Db\AbstractDbतो आपको saveAttributeअपने संसाधन मॉडल में विधि को लागू करना होगा ।
Magento 2 में, उन्होंने इसे Magento\Sales\Model\ResourceModel\Attributeकक्षा के लिए किया है :
public function saveAttribute(AbstractModel $object, $attribute)
{
if ($attribute instanceof AbstractAttribute) {
$attributes = $attribute->getAttributeCode();
} elseif (is_string($attribute)) {
$attributes = [$attribute];
} else {
$attributes = $attribute;
}
if (is_array($attributes) && !empty($attributes)) {
$this->getConnection()->beginTransaction();
$data = array_intersect_key($object->getData(), array_flip($attributes));
try {
$this->_beforeSaveAttribute($object, $attributes);
if ($object->getId() && !empty($data)) {
$this->getConnection()->update(
$object->getResource()->getMainTable(),
$data,
[$object->getResource()->getIdFieldName() . '= ?' => (int)$object->getId()]
);
$object->addData($data);
}
$this->_afterSaveAttribute($object, $attributes);
$this->getConnection()->commit();
} catch (\Exception $e) {
$this->getConnection()->rollBack();
throw $e;
}
}
return $this;
}