Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自定义更新的_at字段不';t工作目录库存库存物品当前时间戳_Php_Magento_Timestamp_Field_Add - Fatal编程技术网

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的更新_上没有。