Skip to main content
1 of 2
Pradeep Kumar
  • 8.8k
  • 12
  • 62
  • 86

create a app\code\Sugarcode\Test\Setup\UpgradeSchema.php and run upgrade command

when ever version was changed just change in module.xml and in UpgradeSchema.php add one more if condition with version compare

if (version_compare($context->getVersion(), '2.0.1', '<')) {
            
            // Changes here.
        }

so when you run upgrade command it will run UpgradeSchema.php file and in that it will compare the version based on that version it will execute the code

ex

<?php
 
namespace Sugarcode\Test\Setup;
 
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\DB\Ddl\Table;
 
class UpgradeSchema implements UpgradeSchemaInterface
{
    public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();
         $tableName = $setup->getTable('testtable');
        if (version_compare($context->getVersion(), '2.0.0') < 0) {
            // Changes here.
        }

        if (version_compare($context->getVersion(), '2.0.1', '<')) {
            
            // Changes here.
        }
        if (version_compare($context->getVersion(), '2.0.2', '<')) {
              if ($setup->getConnection()->isTableExists($tableName) == true) {
                $connection = $setup->getConnection();
                /* $connection->addColumn(
                    $tableName,
                    'updated_at',
                    ['type' => Table::TYPE_DATETIME,'nullable' => false, 'default' => '', 'afters' => 'created_at'],
                    'Updated At'
                ); */
                $connection->changeColumn(
                    $tableName,
                    'summary',
                    'short_summary',
                    ['type' => Table::TYPE_TEXT, 'nullable' => false, 'default' => ''],
                    'Short Summary'
                );
                // Changes here.
            }
        }
        
        
        $setup->endSetup();
        
    }
}

module.xml

<?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
        <module name="Sugarcode_Test" setup_version="2.0.2" schema_version="2.0.2" />
    </config>

if it works accept the answer by clicking right symbol

Pradeep Kumar
  • 8.8k
  • 12
  • 62
  • 86