Ich möchte ein Produktattribut pragmatisch aus jeder Tabelle löschen. Ich habe einen Code erhalten, der das Kundenattribut löscht.
Ich möchte genau wie dieser Code, der Produktattribut löschen war.
<?php
error_reporting(E_ALL | E_STRICT);
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app();
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
try {
$custAttr = 'user_name'; // here enter your attribute name which you want to remove
$setup->removeAttribute('customer', $custAttr);
echo $custAttr." attribute is removed";
}
catch (Mage_Core_Exception $e) {
$this->_fault('data_invalid', $e->getMessage());
}
?>
Bitte hilf mir.
magento-1.7
product-attribute
eav
Amit Bera
quelle
quelle
startSetup
, da dadurch Fremdschlüsselprüfungen deaktiviert werden. Daher wird das Attribut gelöscht, aber alle zugehörigen Attributwerte werden in der Datenbank gespeichert.Sie können den folgenden Code ausprobieren
Es werden nur Attribute aus dem Attributsatz entfernt, aber ich bin nicht sicher, ob es auch dauerhaft entfernt wird.
Um ein Attribut dauerhaft zu entfernen, können Sie es unten versuchen.
Eine andere Methode ist:
Erstellen Sie zuerst eine test.php im Magento-Stammverzeichnis.
Platzieren Sie dort den Code
quelle
startSetup()
(undendSetup()
) nicht verwenden, da dies die Überprüfung von Fremdschlüsseln deaktivieren und grundsätzlich das kaskadierende Löschen in verwandten Tabellen verhindern würde. Sie würden am Ende viele Einträge in Ihren verschiedenen EAV-Tabellen haben, die nicht mehr mit einem Attribut übereinstimmen. Dies würde Ihre Datenbank überladen.Mit dem folgenden Code wird das Produktattribut dauerhaft gelöscht.
quelle
Sie können dies mit direktem SQL tun.
Der erste Schritt besteht darin, die ID Ihres Attributs zu ermitteln. Sie können dies tun, indem Sie durch
Catalog
→Attributes
→ navigierenManage Attributes
, dann nach Ihrem Attribut suchen und darauf klicken, um es zu bearbeiten.Sobald Sie sich auf dem Bearbeitungsbildschirm befinden, können Sie Ihre Attribut-ID in der URL der Seite sehen
www.yourwebsitename.com/index.php/admin/catalog_product_attribute/edit/attribute_id/533/
Sie müssen auch wissen, um welche Art von Attribut es sich handelt, damit Sie die richtige Tabelle auswählen können. Die EAV-Tabellen lauten wie folgt:
catalog_product_entity_varchar
catalog_product_entity_datetime
catalog_product_entity_int
catalog_product_entity_decimal
, usw.Möglicherweise möchten Sie dies überprüfen, indem Sie beispielsweise PHPMyAdmin verwenden und das Attribut selbst zuerst in einer dieser Tabellen suchen.
Richten Sie vor diesem Hintergrund in Ihrem HTML-Stammverzeichnis ein Skript mit dem Namen "delete_my_attribute.php" oder ähnlichem ein:
Und voila, du bist fertig. Die erste Anweisung löscht alle Werte für alle Produkte, für die sie möglicherweise festgelegt wurde, und die zweite Anweisung löscht das Attribut aus der Tabelle selbst.
Sie müssen Ihren Browser nur auf das Skript verweisen, damit es ausgeführt werden kann.
Wenn Sie das Gelöscht erfolgreich erhalten! Nachricht du solltest fertig sein ;-)
quelle
Sie können Attribute über ein Skript löschen, das im Browser ausgeführt wird, z. B.: Removeeattributes.php .
Sie können es in Ihren Magento- Stammordner legen .
Beispiel für die Ausführung: https://www.yourwebsite.com/removeattributes.php
Der Inhalt des Skripts lautet wie folgt:
oder es kann durch MySQL-Upgrade sein
Beispiel:
im
Beispiel:
Hinweis: Überprüfen Sie Ihre Modul-XML auf Ihre Modulversion
in diesem Beispiel:
Getestet und funktioniert gut in Magento 1.9.2.2 und Magento 1.9.3.8
quelle
Ich verwende dieses Skript, um Attribute bestimmter Entitätstypen in der URL zu entfernen. Dieses Skript stellt sicher, dass ein Administrator angemeldet sein muss, bevor Anforderungen zum Entfernen von Attributen ausgeführt werden.
URL-Beispiel:
Code:
quelle