Ich habe ein Problem damit, den Wert eines benutzerdefinierten Modells auf NULL zu aktualisieren.
$model = Mage::getModel('custom/model')->load($id);
$model->setCustomValue(NULL);
$model->save();
Dieser Code aktualisiert das Feld custom_value
in der Datenbank nicht und der Datenbankwert akzeptiert NULL-Werte (das manuelle Festlegen von NULL in der Datenbank funktioniert einwandfrei).
BEARBEITEN:
Wie Tim unten erwähnt, Zend_Db_Expr("NULL")
setzt using den Wert auf null. Kann jemand erklären, warum dies in Magento erforderlich ist und nicht nur ein PHP NULL
?
magento-1.7
magento-1.8
Aufrufen
quelle
quelle
double
und ich habe versucht, andere numerische Typen wiedecimal
und Doing$model->setCustomValue("");
setzt den Wert auf0
$null = new Zend_Db_Expr("NULL");
?Antworten:
Dies ist, wie so oft ein
isset()
vs-array_key_exists()
Problem, wenn ich das richtig sehe.Ich habe es nicht ausprobiert, aber beim Lesen des Codes würde ich sagen, dass der Wert hier überprüft wird:
und weil
isset
bei einem festgelegten Array-Schlüssel false zurückgegeben wirdNULL
, wird Ihr Wert überschrieben.quelle