Magento2 : No Updation in custom table for module
-
03-10-2020 - |
Question
I am using upgradeschema to update field in my custom table i want to add gender and city in this table but after running upgrade command on CLI no updation in database table here's my upgradeschema
<?php
namespace Contact\Modules\Setup;
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
class UpgradeSchema implements UpgradeSchemaInterface
{
public function upgrade(SchemaSetupInterface $setup,
ModuleContextInterface $context){
$setup->startSetup();
if (version_compare($context->getVersion(), '1.0.0') < 0) {
// Get module table
$tableName = $setup->getTable('modules_contact');
// Check if the table already exists
if ($setup->getConnection()->isTableExists($tableName) == true) {
// Declare data
$columns = [
'gender' => [
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'nullable' => false,
'comment' => 'gender',
],
'city' => [
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'nullable' => false,
'comment' => 'city',
],
];
$connection = $setup->getConnection();
foreach ($columns as $name => $definition) {
$connection->addColumn($tableName, $name, $definition);
}
}
}
$setup->endSetup();
}
}
Solution
Under app/etc/module.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Contact_Modules" setup_version="1.0.2" />
</config>
Under UpgradeSchema.php file,
<?php
namespace Contact\Modules\Setup;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\UpgradeSchemaInterface;
class UpgradeSchema implements UpgradeSchemaInterface
{
public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$installer = $setup;
$installer->startSetup();
if (version_compare($context->getVersion(), '1.0.2', '<')) {
$installer->getConnection()->addColumn(
$installer->getTable('modules_contact'),
'gender',
[
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'length' => 20,
'nullable' => false,
'comment' => 'gender'
]
);
$installer->getConnection()->addColumn(
$installer->getTable('modules_contact'),
'city',
[
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'nullable' => false,
'comment' => 'City'
]
);
}
$installer->endSetup();
}
}
Run php bin/magento setup:upgrade command
php bin/magento setup:static-content:deploy
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange