/** * Delete entity * * @param \Magento\Eav\Model\Entity\Attribute\AbstractAttribute $object * @return $this */ public function deleteEntity(\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $object) { if (!$object->getEntityAttributeId()) { return $this; } $this->getConnection()->delete($this->getTable('eav_entity_attribute'), ['entity_attribute_id = ?' => $object->getEntityAttributeId()]); return $this; }
/** * Delete entity * * @param \Magento\Eav\Model\Entity\Attribute\AbstractAttribute $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ public function deleteEntity(\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $object) { if (!$object->getEntityAttributeId()) { return $this; } $result = $this->getEntityAttribute($object->getEntityAttributeId()); if ($result) { $attribute = $this->_eavConfig->getAttribute($object->getEntityTypeId(), $result['attribute_id']); try { $this->attrLockValidator->validate($attribute, $result['attribute_set_id']); } catch (\Magento\Framework\Exception\LocalizedException $exception) { throw new \Magento\Framework\Exception\LocalizedException(__('Attribute \'%1\' is locked. %2', $attribute->getAttributeCode(), $exception->getMessage())); } $backendTable = $attribute->getBackend()->getTable(); if ($backendTable) { $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField(); $select = $this->getConnection()->select()->from($attribute->getEntity()->getEntityTable(), $linkField)->where('attribute_set_id = ?', $result['attribute_set_id']); $clearCondition = ['attribute_id =?' => $attribute->getId(), $linkField . ' IN (?)' => $select]; $this->getConnection()->delete($backendTable, $clearCondition); } } $condition = ['entity_attribute_id = ?' => $object->getEntityAttributeId()]; $this->getConnection()->delete($this->getTable('eav_entity_attribute'), $condition); return $this; }