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
테이블에 새로운 엔트리를 기대할 것이다 . 그러나 마 젠토는 여기서 아무 것도하지 않습니다.
리소스를 파고 들자 데이터베이스 리소스 클래스 에서이 문제에 빠져있는 것처럼 보입니다.
#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
거짓으로 하드 코딩되어 있기 때문에 저장 요청은 항상 경로로 라우팅됩니다 insert
.
기본 Magento 모델을 사용하여 강제로 삽입하는 방법이 있습니까? (다시 쓰기 / 클래스 교체없이).
예, 원시 SQL은 옵션이지만 이벤트 기능이 손실됩니다.
자동 증가 필드에 ID를 할당하려고하는 이유는 무엇입니까? 이것이 다운 스트림 종속성 인 경우 레코드를 작성한 다음 자동 생성 된 PK를 검색하지 않아야합니까?
—
Ralph Tice
@RalphTice 그렇습니다. 아마 매일 사용하는 것이 옳을 것입니다.
—
Alan Storm