有没有一种方法可以使用Magento的简单ORM(Mage_Core_Model_Abstract
和Mage_Core_Model_Resource_Abstract
)插入具有特定主键的模型行?
例如,如果我针对空的Magento系统运行以下命令
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
我希望表中有一个新条目core_website
。但是,Magento在这里默默无闻。
深入研究资源,看来我在数据库资源类中对此感到不满
#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
}
因为模型有一个ID(即我要插入一个特定的ID),并且由于_useIsObjectNew
将其硬编码为false,所以我的保存请求始终被路由到该insert
路径。
有没有办法用默认的Magento型号强制插入?(无重写/类替换)。
是的,可以选择使用原始SQL,但是事件功能会丢失。
为什么要尝试为自动递增字段分配ID?如果这是下游依赖关系,您不应该只创建记录然后检索自动生成的PK吗?
—
2013年
@RalphTice是的,这可能是日常使用的正确选择。
—
艾伦·斯托姆