自定义updated_at字段不起作用cataloginventory_stock_item current_timestamp

时间:2012-01-05 21:47:18

标签: php magento timestamp field add

我在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()

创建字段

3 个答案:

答案 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);
}