J'ai une table personnalisée. Je veux tronquer la table à l'aide de la collection Magento sans requête SQL.
J'espère que quelqu'un vous fournira des informations utiles.
magento-1.7
magento-1.8
database
collection
VijayS91
la source
la source
Réponses:
Magento n'a pas de support pour cela (pour autant que je sache).
Mais vous pouvez implémenter une méthode dans votre modèle de ressource (pas le modèle de ressource de collection) qui tronquera la table.
Quelque chose comme ça:
Ensuite, vous pouvez l'appeler dans votre code:
Mais c'est une approche très dangereuse. L'
truncate
instruction interrompt la transaction, elle ne peut donc pas être annulée au cas où vous en auriez besoin.Je suggère à la place de supprimer toutes les entités du tableau.
L'inconvénient est qu'il ne réinitialise pas l'ID d'incrément de la table. Mais c'est plus sûr.
MODIFIER .
Pour mettre à jour l'ID d'incrémentation de la table principale, vous pouvez ajouter une nouvelle méthode dans votre modèle de ressource qui fait quelque chose comme ça.
Appelez ensuite votre méthode dans le code:
la source
Mage_Catalog_Model_Product
. Il y a le modèle de ressource. Exemple:Mage_Catalog_Model_Resource_Product
. Et il y a le modèle de ressource de collectionMage_Catalog_Model_Resource_Product_Collection
.Remarque: MySQL réinitialise la valeur d'auto-incrémentation
1
lors de la troncature d'une table, donc ce n'est pas obligatoire, maischangeTableAutoIncrement
peut être utile si quelqu'un veut que l'IA commence par une autre valeur.Modifier:
Cette question a été taguée avec magento-1.7 / magento-1.8 ... juste pour compléter la réponse:
changeTableAutoIncrement
a été ajouté au 1.8.0.1truncateTable
a été ajouté dans 1.6.0.0-alpha1la source
J'ai créé un modèle et pour certains développements j'ai dû implémenter la méthode de suppression. C'est très facile. J'essaie également de supprimer conditionnellement mais je n'ai pas obtenu le code exact. Mais j'utilise le code suivant qui répondra à votre exigence de suppression conditionnelle.
la source