/** * Perform actions after object save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { $this->_clearUselessAttributeValues($object); return parent::_afterSave($object); }
/** * Save attribute/form relations after attribute save * * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(AbstractModel $object) { $forms = $object->getData('used_in_forms'); $adapter = $this->_getWriteAdapter(); if (is_array($forms)) { $where = array('attribute_id=?' => $object->getId()); $adapter->delete($this->_getFormAttributeTable(), $where); $data = array(); foreach ($forms as $formCode) { $data[] = array('form_code' => $formCode, 'attribute_id' => (int) $object->getId()); } if ($data) { $adapter->insertMultiple($this->_getFormAttributeTable(), $data); } } // update sort order if (!$object->isObjectNew() && $object->dataHasChangedFor('sort_order')) { $data = array('sort_order' => $object->getSortOrder()); $where = array('attribute_id=?' => (int) $object->getId()); $adapter->update($this->getTable('eav_entity_attribute'), $data, $where); } // save scope attributes $websiteId = (int) $object->getWebsite()->getId(); if ($websiteId) { $table = $this->_getEavWebsiteTable(); $describe = $this->_getReadAdapter()->describeTable($table); $data = array(); if (!$object->getScopeWebsiteId() || $object->getScopeWebsiteId() != $websiteId) { $data = $this->getScopeValues($object); } $data['attribute_id'] = (int) $object->getId(); $data['website_id'] = (int) $websiteId; unset($describe['attribute_id']); unset($describe['website_id']); $updateColumns = array(); foreach (array_keys($describe) as $columnName) { $data[$columnName] = $object->getData('scope_' . $columnName); $updateColumns[] = $columnName; } $adapter->insertOnDuplicate($table, $data, $updateColumns); } return parent::_afterSave($object); }