In Magento 2 Sometimes we have added a column/field in the table for our custom requirement and in future if we need to rename or change that column name, we can rename it using UpgradeSchema.php file.
I have added one field name guestname in sales_order table and I want to rename that field to fullname. You can rename field using changeColumn() in UpgradeSchema.php file.
Using below code snippet you can rename already existed column field from a table.
Upgrade the setup_version number of module from module.xml file. An older version number is 1.0.1 so I have added new version 1.0.2 in module.xml file
Path: Magento22/app/code/Rbj/Training/etc/module.xml
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Rbj_Training" setup_version="1.0.2"/>
</config>
Create UpgradeSchema.php file under Setup folder in your module.Path: Magento22/app/code/Rbj/Training/Setup/UpgradeSchema.php
<?php
namespace Rbj\Training\Setup;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\UpgradeSchemaInterface;
/**
* Upgrade the Sales_Order Table to remove extra field
*/
class UpgradeSchema implements UpgradeSchemaInterface
{
public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
if (version_compare($context->getVersion(), '1.0.2', '<')) {
$setup->getConnection()->changeColumn(
$setup->getTable('sales_order'),
'guestname',
'fullname',
[
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'length' => 255,
'comment' => 'Full name of customer'
]
);
}
$setup->endSetup();
}
}
Using the above code snippet you can change column name from guestname to fullname with 255 character type text
Run command from root directory of your project,php bin/magento setup:upgrade
If you want to drop field name from a table, Remove an extra field from a table
If you want to add the field in table Add New Field in Database Table Magento 2