Php 自定义更新的_at字段不';t工作目录库存库存物品当前时间戳
我在Php 自定义更新的_at字段不';t工作目录库存库存物品当前时间戳,php,magento,timestamp,field,add,Php,Magento,Timestamp,Field,Add,我在cataloginventory\u stock\u item中添加了一个额外字段,以便在库存发生变化时更新到当前时间: Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $installer = new Mage_Eav_Model_Entity_Setup('core_setup'); $installer->startSetup();
cataloginventory\u stock\u 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中的数量更改时,该字段不会更新为当前时间戳(但数量确实更改)
我还尝试使用
CURRENT\u TIMESTAMP
而不是NOW()
创建一个字段。我相信只有在您不为该列提供值的情况下,才会由MySQL触发更新行为。由于Magento模型使用Varien\u对象的方式,从数据库加载的值在保存模型时才会被发布。如果您希望更新此内容,最好在保存之前注册cataloginventory\u stock\u item\u的观察者,并使用setData将更新时间设置为保存到数据库之前的当前时间。我相信只有在您不为该列提供值的情况下,MySQL才会触发更新行为,由于Magento模型使用Varien_对象的方式,从数据库加载的值将在保存模型时发布。如果您希望更新此内容,您的最佳选择可能是在保存之前注册cataloginventory\u stock\u item\u的观察员,并使用setData将更新的时间设置为保存到数据库之前的当前时间。您可以在保存模型之前,通过侦听目录库存库存项目保存事件来更新模型的更新的时间
数据值。您可以更新模型的更新的时间
数据值在保存模型之前,通过侦听cataloginventory\u stock\u item\u save\u before
事件来执行此操作。您可以执行以下操作:
$item->setUpdatedAt(0);
与手动设置时间戳没有太大区别,但由数据库来设置时间戳
如果是自定义模型,也可以在模型中执行以下操作:
protected function _beforeSave(Mage_Core_Model_Abstract $model)
{
$model->setUpdatedAt(0);
}
您可以执行以下操作来实现此功能:
$item->setUpdatedAt(0);
与手动设置时间戳没有太大区别,但由数据库来设置时间戳
如果是自定义模型,也可以在模型中执行以下操作:
protected function _beforeSave(Mage_Core_Model_Abstract $model)
{
$model->setUpdatedAt(0);
}
另一方面,如果您查看Magento数据库的结构,您将看到几个表在名为created_at的字段上有更新行为,而在facepalm的更新_上没有。另一方面,如果您查看Magento数据库的结构,您将看到,有几个表在名为created_at的字段上有更新行为,而在facepalm的更新_上没有。