Magento перехват исключений и откат транзакций базы данных - PullRequest
10 голосов
/ 02 февраля 2011

Я работаю над модулем Magento и мне нужно знать, возможно ли откатить серию сохраненных моделей. По сути, у меня есть пять моделей плюс несколько из моего модуля, которые мне нужно сохранять одну за другой:

admin/role
admin/user
core/website
core/store_group
core/store
mymodule/model1
mymodule/model2

Моя проблема заключается в том, что всякий раз, когда любая из этих моделей выдает исключение, мне нужно зайти в MySQL и вручную удалить все сохраненные строки. Это очень непродуктивно.

Я почти уверен, что у Magento нет процедуры отката, к которой я могу обратиться в моем контексте. Например, я посмотрел в Mage_Core_Model_Abstract и в методе сохранения все механизмы отката защищены.

Итак, мой вопрос: есть ли лучшая практика для выполнения транзакций базы данных в Magento, о которой я должен знать?

1 Ответ

13 голосов
/ 02 февраля 2011

Я видел следующее, использованное в коде ядра, и похоже, что оно именно то, что вы заказали.

$transactionSave = Mage::getModel('core/resource_transaction');
$transactionSave->addObject($model_one)
$transactionSave->addObject($model_two)
$transactionSave->save();

Объект core/resource_transaction позволяет добавлять объекты Magento и выполнять массовое сохранение.на них.Попробуйте, и я хотел бы услышать, как это работает или не работает для вас в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...