У меня есть пользовательский стол. Я хочу обрезать таблицу с помощью коллекции Magento без SQL-запроса.
Надеюсь, кто-нибудь предоставит полезную информацию.
magento-1.7
magento-1.8
database
collection
VijayS91
источник
источник
Ответы:
Magento не имеет поддержки для этого (насколько я знаю).
Но вы можете реализовать метод в своей модели ресурсов (не модель ресурсов коллекции), который будет усекать таблицу.
Что-то вроде этого:
Тогда вы можете назвать это в своем коде:
Но это очень опасный подход. В
truncate
брейки заявлении сделка, поэтому он не может быть откат в случае , если вам нужно.Вместо этого я предлагаю удалить все объекты в таблице.
Недостатком является то, что он не сбрасывает идентификатор приращения таблицы. Но это безопаснее.
РЕДАКТИРОВАТЬ .
Чтобы обновить идентификатор приращения основной таблицы, вы можете добавить новый метод в модель ресурсов, который выполняет что-то вроде этого.
Затем вызовите ваш метод в коде:
источник
Mage_Catalog_Model_Product
. Есть модель ресурса. Пример:Mage_Catalog_Model_Resource_Product
. И есть модель коллекции ресурсовMage_Catalog_Model_Resource_Product_Collection
.Примечание. MySQL сбрасывает значение автоинкремента
1
при усечении таблицы, поэтому это не требуется, ноchangeTableAutoIncrement
может быть полезно, если кто-то хочет, чтобы ИИ начинался с другого значения.Редактировать:
Этот вопрос был помечен magento-1.7 / magento-1.8 ... просто чтобы завершить ответ:
changeTableAutoIncrement
был добавлен в 1.8.0.1truncateTable
был добавлен в 1.6.0.0-alpha1источник
Я создал модель, и для разработки мне пришлось реализовать метод удаления. Это очень просто. Я также пытаюсь условно удалить, но я не получил точный код. Но я использую следующий код, который будет выполнять ваше требование для условного удаления.
источник