我也遇到了这个。客户想知道订阅/取消订阅操作发生的日期。环顾互联网,我发现其他一些人遇到了这个问题,有些人声称它曾经在非常旧的 Magento 版本中工作。
我认为发生的事情是 change_status_at 的字段定义曾经设置为自动更新为默认时间戳(即 ON UPDATE CURRENT_TIMESTAMP),但在某些更新中丢失了。所以没有写入该字段的 Magento 代码,因为 MySql 应该神奇地维护它。
您可以尝试更新表定义以重新添加 ON UPDATE CURRENT_TIMESTAMP(但我不赞成更改默认模型表)或添加另一个字段作为默认时间戳字段。
或者更好的解决方案是创建一个带有观察者的模块,以便在订阅更改时添加日期。这可能看起来像(警告 - 此代码只是一个示例,由于删除我的模块信息可能存在一些语法错误) -
应用程序/代码/本地/Myco/MyMod/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Myco_MyMod>
<version>1.0.0</version>
</Myco_MyMod>>
</modules>
<global>
<models>
<myco>
<class>Myco_MyMod_Model</class>
</myco>
</models>
<events>
<newsletter_subscriber_save_before>
<observers>
<mycomymod_observer_subscriber>
<type>singleton</type>
<class>Myco_MyMod_Model_Observer</class>
<method>setUpdateDate</method>
</mycomymod_observer_subscriber>
</observers>
</newsletter_subscriber_save_before>
</events>
</global>
</config>
===========
在 app/code/local/Myco/MyMod/Modules/Observer.php
<?php
class Myco_MyMod_Model_Observer
{
public function setUpdateDate(Varien_Event_Observer $observer) {
$subscriber = $observer->getSubscriber();
$subscriber['change_status_at'] = (date("Y-m-d H:i:s", time()));
}
}