我需要将NULL-field的值更改为空字符串(在sales_flat_order表中)。 我试过这段代码:
$orders = Mage::getModel('sales/order')->getCollection()
->addAttributeToFilter('created_at', array('to' => $endDate))
->addAttributeToFilter('status', array('eq' => Mage_Sales_Model_Order::STATE_COMPLETE));
foreach ($orders as $order) {
$comment = $order->getCustomerNote();
if (is_null($comment)) {
$order->setData('customer_note', '');
try {
$order->save();
} catch (Exception $e){
echo $e->getMessage(); exit;
}
}
}
但是在基础中我在这个字段中看到仍然是NULL值。 如果我将空字符串更改为任何非空字符串它可以正常工作。 如何将NULL值字段更新为空字符串?
感谢。
答案 0 :(得分:0)
Varien_Db_Adapter_Pdo_Mysql::prepareColumnValue()
中的空字符串设置为 null :
case 'varchar':
case 'mediumtext':
case 'text':
case 'longtext':
$value = (string)$value;
if ($column['NULLABLE'] && $value == '') {
$value = null;
}
break;
要将列值重置为空字符串,请在资源模型中添加:
protected function _prepareDataForSave(Mage_Core_Model_Abstract $object)
{
$data = parent::_prepareDataForSave($object);
if ($object->getData('your_column_name') === '') {
$data['your_column_name'] = '';
}
return $data;
}
答案 1 :(得分:-1)
我试过,这很正常。
$order->setData('customer_note', new Zend_Db_Expr(''));
try {
$order->save();
} catch (Exception $e){
echo $e->getMessage(); exit;
}