Mam własny stół. Chcę obciąć tabelę przy użyciu kolekcji Magento bez zapytania SQL.
Mam nadzieję, że ktoś dostarczy użytecznych informacji.
magento-1.7
magento-1.8
database
collection
VijayS91
źródło
źródło
Odpowiedzi:
Magento nie ma na to wsparcia (o ile mi wiadomo).
Ale możesz zaimplementować metodę w swoim modelu zasobów (nie w modelu zasobów kolekcji), która obetnie tabelę.
Coś takiego:
Następnie możesz wywołać go w kodzie:
Ale to bardzo niebezpieczne podejście. Do
truncate
przerwy rachunku transakcji, więc nie może być wycofana w przypadku trzeba.Zamiast tego sugeruję usunięcie każdego elementu w tabeli.
Wadą tego jest to, że nie resetuje on identyfikatora przyrostu tabeli. Ale to jest bezpieczniejsze.
EDYCJA .
Aby zaktualizować identyfikator przyrostu tabeli głównej, możesz dodać nową metodę w modelu zasobów, która robi coś takiego.
Następnie wywołaj metodę w kodzie:
źródło
Mage_Catalog_Model_Product
. Istnieje model zasobów. Przykład:Mage_Catalog_Model_Resource_Product
. I istnieje model zasobów kolekcjiMage_Catalog_Model_Resource_Product_Collection
.Uwaga: MySQL resetuje wartość autoinkrementacji do
1
skrótu tabeli, więc nie jest to wymagane, alechangeTableAutoIncrement
może być przydatne, jeśli ktoś chce mieć AI zaczynającą się od innej wartości.Edytować:
To pytanie zostało oznaczone tagiem magento-1.7 / magento-1.8 ... tylko w celu uzupełnienia odpowiedzi:
changeTableAutoIncrement
został dodany w 1.8.0.1truncateTable
został dodany w wersji 1.6.0.0-alfa1źródło
Mam model i dla pewnego rozwoju musiałem zaimplementować metodę delete. To bardzo łatwe. Próbuję również usunąć warunkowego, ale nie otrzymałem dokładnego kodu. Ale używam następującego kodu, który spełni twoje wymagania dotyczące warunkowego usunięcia.
źródło