J'ai un problème pour obtenir la valeur d'un modèle personnalisé à mettre à jour vers NULL.
$model = Mage::getModel('custom/model')->load($id);
$model->setCustomValue(NULL);
$model->save();
Ce code ne met pas à jour le champ custom_value
dans la base de données et la valeur de la base de données accepte les valeurs NULL (la définition manuelle de NULL dans la base de données fonctionne correctement).
EDIT:
Comme Tim mentionne ci-dessous en utilisant Zend_Db_Expr("NULL")
ne définit la valeur à null, quelqu'un pourrait-il expliquer pourquoi cela est requis dans Magento et pas simplement un php NULL
?
magento-1.7
magento-1.8
Invoquer
la source
la source
double
et j'ai essayé d'autres types numériques commedecimal
et faire$model->setCustomValue("");
définit la valeur sur0
$null = new Zend_Db_Expr("NULL");
?Réponses:
C'est, comme si souvent, un problème
isset()
vsarray_key_exists()
, quand je vois cela correctement.Je ne l'ai pas essayé, mais à la lecture du code, je dirais que la valeur est vérifiée ici:
et parce que
isset
return false sur une clé de tableau définie qui estNULL
, votre valeur est remplacée.la source