У меня проблема с получением значения пользовательской модели для обновления до NULL.
$model = Mage::getModel('custom/model')->load($id);
$model->setCustomValue(NULL);
$model->save();
Этот код не обновляет поле custom_value
в базе данных, и значение базы данных принимает значения NULL (ручная установка NULL в базе данных работает нормально).
РЕДАКТИРОВАТЬ:
Как Тим упоминает ниже, используя Zend_Db_Expr("NULL")
значение устанавливает нулевое значение, кто-нибудь может объяснить, почему это требуется в Magento, а не просто php NULL
?
magento-1.7
magento-1.8
Invoke
источник
источник
double
и я пробовал другие числовые типы, такие как,decimal
и, делая,$model->setCustomValue("");
устанавливает значение в0
$null = new Zend_Db_Expr("NULL");
?Ответы:
Это, как это часто
isset()
противarray_key_exists()
проблемы, когда я вижу это правильно.Я не пробовал, но из чтения кода, я бы сказал, здесь проверяется значение:
и потому что
isset
возвращают false на установленном ключе массиваNULL
, то ваше значение перезаписывается.источник