/** * 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 * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ protected function _afterSave(AbstractModel $object) { $forms = $object->getData('used_in_forms'); $connection = $this->getConnection(); if (is_array($forms)) { $where = ['attribute_id=?' => $object->getId()]; $connection->delete($this->_getFormAttributeTable(), $where); $data = []; foreach ($forms as $formCode) { $data[] = ['form_code' => $formCode, 'attribute_id' => (int) $object->getId()]; } if ($data) { $connection->insertMultiple($this->_getFormAttributeTable(), $data); } } // update sort order if (!$object->isObjectNew() && $object->dataHasChangedFor('sort_order')) { $data = ['sort_order' => $object->getSortOrder()]; $where = ['attribute_id=?' => (int) $object->getId()]; $connection->update($this->getTable('eav_entity_attribute'), $data, $where); } // save scope attributes $websiteId = (int) $object->getWebsite()->getId(); if ($websiteId) { $table = $this->_getEavWebsiteTable(); $describe = $this->getConnection()->describeTable($table); $data = []; 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 = []; foreach (array_keys($describe) as $columnName) { $data[$columnName] = $object->getData('scope_' . $columnName); $updateColumns[] = $columnName; } $connection->insertOnDuplicate($table, $data, $updateColumns); } return parent::_afterSave($object); }