Ich habe eine benutzerdefinierte Tabelle. Ich möchte die Tabelle mit der Magento-Sammlung ohne SQL-Abfrage abschneiden .
Hoffe, jemand wird einige nützliche Informationen liefern.
magento-1.7
magento-1.8
database
collection
VijayS91
quelle
quelle
Antworten:
Magento hat keine Unterstützung dafür (soweit ich weiß).
Sie können jedoch in Ihrem Ressourcenmodell eine Methode implementieren (nicht das Auflistungsressourcenmodell), die die Tabelle abschneidet.
Etwas wie das:
Dann können Sie es in Ihrem Code aufrufen:
Dies ist jedoch ein sehr gefährlicher Ansatz. Die
truncate
Anweisung bricht die Transaktion ab, sodass bei Bedarf kein Rollback durchgeführt werden kann.Ich empfehle stattdessen, alle Entitäten in der Tabelle zu löschen.
Dies hat den Nachteil, dass die Inkrement-ID der Tabelle nicht zurückgesetzt wird. Aber es ist sicherer.
BEARBEITEN .
Um die Inkrement-ID der Haupttabelle zu aktualisieren, können Sie Ihrem Ressourcenmodell eine neue Methode hinzufügen, die so etwas tut.
Rufen Sie dann Ihre Methode im Code auf:
quelle
Mage_Catalog_Model_Product
. Es gibt das Ressourcenmodell. Beispiel:Mage_Catalog_Model_Resource_Product
. Und da ist das SammlungsressourcenmodellMage_Catalog_Model_Resource_Product_Collection
.Hinweis: MySQL setzt den Wert für die automatische Inkrementierung auf den Wert zurück,
1
wenn eine Tabelle abgeschnitten wird. Dies ist daher nicht erforderlich,changeTableAutoIncrement
kann jedoch nützlich sein, wenn eine KI mit einem anderen Wert beginnen soll.Bearbeiten:
Diese Frage wurde mit magento-1.7 / magento-1.8 getaggt ... um die Antwort zu vervollständigen:
changeTableAutoIncrement
wurde in 1.8.0.1 hinzugefügttruncateTable
wurde in 1.6.0.0-alpha1 hinzugefügtquelle
Ich habe ein Modell erstellt und für einige Entwicklungen musste ich eine Löschmethode implementieren. Es ist sehr leicht. Ich versuche auch das bedingte Löschen, aber ich habe keinen genauen Code erhalten. Ich verwende jedoch den folgenden Code, der Ihre Anforderung für das bedingte Löschen erfüllt.
quelle