Magento – Magento EE 1.14.2.2 Upgrade Script add multiple Columns

magento-1setup-script

Hello I'm struggling to get an upgrade script working. Here is my script:

$installer = $this;

$installer->startSetup();

// Update table

$installer->getConnection()
->addColumn($installer->getTable('mymodelalias'),
    'new_column1',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_SMALLINT,
        'length' => 1,
        'nullable' => false,
        'default' => 0,
        'comment' => 'My Column 1')
)
->addColumn($installer->getTable('mymodelalias'), 
    'new_column2',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
        'nullable' => true,
        'comment' => 'My Column 2')
)
->addColumn($installer->getTable('mymodelalias'), 
    'new_column3',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
        'length' => 100,
        'nullable' => true,
        'comment' => 'My Column 3')
)
->addColumn($installer->getTable('mymodelalias'), 
    'new_column4',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
        'length' => 255,
        'nullable' => true,
        'comment' => 'My Column 4')
);

$installer->endSetup();

I get this error

Call to undefined method Varien_Db_Statement_Pdo_Mysql::addColumn() in "/Users/myname/app/code/local/Myvendor/Mymodule/sql/myvendor_mymodule_setup/upgrade-0.1.0.2-0.1.0.3.php" line 19

Any idea what's the issue?

Best Answer

I realised that calling $installer->getConnection() for each column made it working.

$installer = $this;

$installer->startSetup(); 

$installer->getConnection()
   ->addColumn($installer->getTable('mymodelalias'),
    'mycolumn1',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_SMALLINT,
        'length' => 1,
        'nullable' => false,
        'default' => 0,
        'comment' => 'My Column 1')
);
$installer->getConnection()
   ->addColumn($installer->getTable('mymodelalias'),
    'mycolumn2',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
        'nullable' => true,
        'comment' => 'My Column 2')
);

etc..

 $installer->endSetup();