Magento 모델에서 값을 NULL로 업데이트하는 올바른 방법은 무엇입니까?


12

NULL로 업데이트 할 사용자 지정 모델의 값을 얻는 데 문제가 있습니다.

$model = Mage::getModel('custom/model')->load($id);
$model->setCustomValue(NULL);
$model->save();

이 코드는 custom_value데이터베이스 의 필드 를 업데이트하지 않으며 데이터베이스 값은 NULL 값을 허용합니다 (데이터베이스에서 수동으로 NULL을 설정하면 문제가 없습니다).

편집 : Tim이 아래에서 언급 한 것처럼 Zend_Db_Expr("NULL")값을 null로 설정하면 누구나 단순히 PHP가 아닌 Magento에서 왜 이것이 필요한지 설명 할 수 NULL있습니까?


그냥 $ model-> setCustomValue ( "");
Mufaddal

테이블 필드의 유형은 double내가 같은 다른 숫자 형식을 시도 decimal하고 일 $model->setCustomValue("");에 세트에게 가치를0
호출

7
어때요 $null = new Zend_Db_Expr("NULL");?
user487772

2
@Invoke, 답변을 "NULL"로만 설정 한 경우 답장을 보내려면 Magento는 값을 업데이트하고 싶지 않다고 생각합니다. Tim이 제안한대로 설정하려는 데이터베이스가 "NULL"인 데이터베이스를 지정해야합니다.
Mayers

@ mayers-dev, 재미있는 행동에 감사드립니다. 값 자체를 생성하는 동안 의도 된 업데이트를 취소 해야하는 경우 get-out 절로 설계된 것 같습니다.
호출

답변:


2

이것은 그래서 종종있다 isset()array_key_exists()내가 올바르게 볼 때, 문제.

나는 그것을 시도하지 않았지만 코드 읽기에서 값은 여기에서 확인됩니다.

\Mage_Eav_Model_Entity_Abstract::_saveAttribute
if (!isset($this->_attributeValuesToSave[$table])) {
    $this->_attributeValuesToSave[$table] = array();
}

isset설정된 배열 키인 false를 반환 하므로 NULL값을 덮어 씁니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.