我在cataloginventory_stock_item
添加了一个额外字段,以更新库存更改时的当前时间:
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$installer = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
$installer->getConnection()->addColumn(
$installer->getTable('cataloginventory_stock_item'),
'updated_time',
'TIMESTAMP ON UPDATE NOW() NOT NULL DEFAULT NOW()'
);
$installer->endSetup();
但是当在magento中更改qty时,字段不会更新到当前时间戳(但是qty确实会更改)。
我还尝试使用CURRENT_TIMESTAMP
代替NOW()
答案 0 :(得分:4)
我相信ON UPDATE行为只会在没有为该列提供值的情况下由MySQL触发,因为Magento模型使用Varien_Object的方式,当您保存模型时,数据库中加载的值将被发布。如果您希望更新此更新,您最好的选择可能是注册cataloginventory_stock_item_before_save的观察者,并使用setData将updated_time保存到数据库之前的当前时间。
答案 1 :(得分:1)
您可以在保存模型之前通过侦听updated_time
事件来更新模型的cataloginventory_stock_item_save_before
数据值。
答案 2 :(得分:1)
您可以执行以下操作:
$item->setUpdatedAt(0);
与手动设置时间戳没有什么不同,但是由数据库来设置它。
如果是自定义模型,您还可以在模型中执行以下操作:
protected function _beforeSave(Mage_Core_Model_Abstract $model)
{
$model->setUpdatedAt(0);
}