回答:
@Smartieによって提供される回答は機能するはずですが、Magento 2が顧客エンティティに対して行うように、データベースレベルでもこれを実現できます。
)->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'
これにより、次の列が設定されます。
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Created At',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Updated At',
それらはモデル自体の中で行われます。たとえば、ウィッシュリストモデルが保存されると、beforeSave関数でupdated_atが更新されます。
app / code / Magento / Wishlist / Model / Wishlist.php 252行目
/**
* Set date of last update for wishlist
*
* @return $this
*/
public function beforeSave()
{
parent::beforeSave();
$this->setUpdatedAt($this->_date->gmtDate());
return $this;
}
ウィッシュリストアイテムモデルでも同様のものが表示されます
app / code / Magento / Wishlist / Model / Item.php
...
public function beforeSave()
{
...
// set current date if added at data is not defined
if (is_null($this->getAddedAt())) {
$this->setAddedAt($this->_date->gmtDate());
}
...
}
...