Tôi đang làm việc trên một mô-đun Magento và cần phải biết nếu có thể quay trở lại một loạt các mô hình tiết kiệm. Về cơ bản, tôi có năm mô hình cộng với một vài từ mô-đun của tôi mà tôi cần phải lưu một sau khi khác:Magento bắt ngoại lệ và quay lại các giao dịch cơ sở dữ liệu
admin/role
admin/user
core/website
core/store_group
core/store
mymodule/model1
mymodule/model2
Vấn đề của tôi là bất cứ khi nào bất kỳ của các mô hình này ném một ngoại lệ, tôi cần phải đi vào MySQL và tự xóa tất cả các hàng đã được lưu. Điều này rất không hiệu quả.
Tôi khá chắc chắn rằng Magento không có quy trình quay lại mà tôi có thể truy cập trong ngữ cảnh của mình. Ví dụ, tôi nhìn vào Mage_Core_Model_Abstract
và trong phương pháp lưu, các cơ chế rollback đều được bảo vệ.
Vì vậy, câu hỏi của tôi là, có một số thực hành tốt nhất để thực hiện các giao dịch cơ sở dữ liệu trong Magento mà tôi nên biết không?
Điều này hoạt động chính xác. Cảm ơn. Tôi cũng thấy rằng tôi có thể lưu lại giao dịch nếu tôi cần thêm nhiều dữ liệu hơn vào các mô hình. Ví dụ, tôi cần phải đặt website_id và store_group_id cho mô hình cửa hàng. Sau khi giao dịch đầu tiên được lưu, mô hình sẽ được cập nhật bằng khóa chính. Sau đó, tôi lưu lại và các hàng được cập nhật. –