Tengo una mesa personalizada. Quiero truncar la tabla usando la colección Magento sin consulta SQL.
Espero que alguien proporcione alguna información útil.
magento-1.7
magento-1.8
database
collection
VijayS91
fuente
fuente
Respuestas:
Magento no tiene soporte para esto (que yo sepa).
Pero puede implementar un método en su modelo de recurso (no el modelo de recurso de recopilación) que truncará la tabla.
Algo como esto:
Entonces puedes llamarlo en tu código:
Pero este es un enfoque muy peligroso. La
truncate
declaración interrumpe la transacción, por lo que no puede revertirse en caso de que lo necesite.Sugiero eliminar todas las entidades en la tabla en su lugar.
La desventaja de esto es que no restablece el ID de incremento de la tabla. Pero es más seguro.
EDITAR .
Para actualizar el ID de incremento de la tabla principal, puede agregar un nuevo método en su modelo de recursos que haga algo como esto.
Luego llame a su método en el código:
fuente
Mage_Catalog_Model_Product
. Existe el modelo de recursos. Ejemplo:Mage_Catalog_Model_Resource_Product
. Y existe el modelo de recursos de recolecciónMage_Catalog_Model_Resource_Product_Collection
.Nota: MySQL restablece el valor de incremento automático
1
al truncar una tabla, por lo que no es obligatorio, perochangeTableAutoIncrement
puede ser útil si alguien quiere que la IA comience con otro valor.Editar:
Esta pregunta fue etiquetada con magento-1.7 / magento-1.8 ... solo para completar la respuesta:
changeTableAutoIncrement
fue agregado en 1.8.0.1truncateTable
fue agregado en 1.6.0.0-alpha1fuente
He creado un modelo y para algún desarrollo tuve que implementar el método de eliminación. Es muy fácil. También trato de eliminar condicional pero no obtuve el código exacto. Pero estoy usando el siguiente código que cumplirá con su requisito de eliminación condicional.
fuente