Magento 2: Update database table add new columns like created_at and updated_at from module
-
16-03-2021 - |
Question
UpgradeScema.php
<?php
namespace Lucent\MegaMenu\Setup;
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Catalog\Model\ResourceModel\Product\Gallery;
use Magento\Catalog\Model\Product\Attribute\Backend\Media\ImageEntryConverter;
/**
* Upgrade the Catalog module DB scheme
*/
class UpgradeSchema implements UpgradeSchemaInterface
{
/**
* {@inheritdoc}
*/
public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
//if (version_compare($context->getVersion(), '0.2.0', '<')) {
$tableName = $setup->getTable('lucent_megamenu');
$setup->getConnection()->addColumn('creation_at',Table::TYPE_TIMESTAMP,null,['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT],'Creation Time')
->setComment('MegaMenu Table');
// }
$setup->endSetup();
}
}
?>
Solution
Try this way..
namespace Lucent\MegaMenu\Setup;
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
class UpgradeSchema implements UpgradeSchemaInterface
{
/**
* {@inheritdoc}
*/
public function upgrade(
SchemaSetupInterface $setup,
ModuleContextInterface $context
) {
$installer = $setup;
$installer->startSetup();
if (version_compare($context->getVersion(), '1.0.1', '<')) {
$installer->getConnection()->addColumn(
$installer->getTable('lucent_megamenu'),
'created_at',
\Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
null,
['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT],
'Created At'
);
$installer->getConnection()->addColumn(
$installer->getTable('lucent_megamenu'),
'updated_at',
\Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
null,
['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
'Updated At'
);
}
$installer->endSetup();
}
}
Note: check the Extension version (change the version as per your requirements) of the extension in the module.xml
file to run the upgrade script while php bin/magento setup:upgrade
.
OTHER TIPS
Give a try with the below code.
namespace Lucent\MegaMenu\Setup;
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
class UpgradeSchema implements UpgradeSchemaInterface
{
/**
* {@inheritdoc}
*/
public function upgrade(
SchemaSetupInterface $setup,
ModuleContextInterface $context
) {
$installer = $setup;
$installer->startSetup();
if (version_compare($context->getVersion(), '1.0.1', '<')) {
$installer->getConnection()->addColumn(
$installer->getTable('lucent_megamenu'),
'creation_at',
[
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
'length' => 1000,
[
'nullable' => false,
'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT
],
'comment' => 'Creation Time'
]
);
$installer->getConnection()->addColumn(
$installer->getTable('lucent_megamenu'),
'updated_at',
[
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
'length' => 1000,
[
'nullable' => false,
'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE
],
'comment' => 'Updation Time'
]
);
}
$installer->endSetup();
}
}
Also, please check the version (change the version as per your requirements) of the extension in the module.xml
file to run the upgrade script while setup:upgrade
.
Hope it helps!!!
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange