本主题的目的是帮助您使用 MYSQL在 Magento 2 的 InstallSchema 中创建自动更新时间属性。

如何在 Magento 2 的 InstallSchema 中创建自动更新时间属性

MYSQL 将直接使用 TIMESTAMP 和 DATETIME,允许自动初始化、更新和显示网站上的当前日期和时间,而不必手动将正确的日期和时间值插入到 PHP 代码中,具体如下:

  • 自动初始化时间属性意味着自动加载当前时间戳和日期时间。
  • 自动更新时间属性意味着自动更新到当前时间戳和日期时间。

为了在Magento 2商店中完美构建自动更新时间属性,您可以参考以下脚本代码。需要将代码添加到 InstallSchema 文件中。

app/code/Example/HelloWorld/Setup/InstallSchema.php

这里有两列created_atupdate_at包含在您的表格中。当您向数据表中设置新行时,created_at 列将进行自动初始化,如果您继续更新数据表中的一行,updated_at 将发生更改。

...
->addColumn(
    'created_at',
    \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
    null,
    ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT],
    'Created At'
)->addColumn(
    'updated_at',
    \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
    null,
    ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
    'Updated At'
)
->addColumn(
    'created_at',
    \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
    null,
    ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT],
    'Created At'
)->addColumn(
    'updated_at',
    \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
    null,
    ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
    'Updated At'
)
...

最后,您需要php bin/magento setup:upgrade在控制台中运行该命令,之后,created_atupdated_at字段将在 MYSQL 中建立。