Có cách nào để sử dụng ORM ( Mage_Core_Model_Abstract
và Mage_Core_Model_Resource_Abstract
) đơn giản của Magento để chèn các hàng mô hình với một khóa chính cụ thể không?
Ví dụ: nếu tôi chạy như sau với hệ thống Magento trống
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
Tôi mong đợi một mục mới trong core_website
bảng. Tuy nhiên, Magento âm thầm không làm gì ở đây.
Đi sâu vào tài nguyên, có vẻ như tôi đang thất vọng về điều này trong lớp tài nguyên cơ sở dữ liệu
#File: app/code/core/Mage/Core/Model/Resource/Db/Abstract.php
if (!is_null($object->getId()) && (!$this->_useIsObjectNew || !$object->isObjectNew())) {
//update stuff here
}
else
{
//insert stuff here
}
Bởi vì mô hình có một id (tức là tôi đang chèn một ID cụ thể) và vì _useIsObjectNew
được mã hóa cứng thành false, yêu cầu lưu của tôi luôn được chuyển đến insert
đường dẫn.
Có cách nào để buộc chèn với các mô hình Magento mặc định không? (không có viết lại / thay thế lớp).
Đúng, SQL thô là một tùy chọn, nhưng sau đó chức năng sự kiện bị mất.