Back to Top

Setup Script files in Magento 2

Updated 21 February 2024

As the name defines: Setup script files used to perform some action on your data or table while installing or upgrading up your module.

All the setup scripts files are created under Setup folder which is at path:

app/code/Webkul/Test/Setup

Setup folder contains following files:

1) InstallSchema.php: This file is created when we want to do changes in our table structure or create a new table.
This file is executed on installation of module.

Searching for an experienced
Magento 2 Company ?
Find out More
<?php

namespace Webkul\Test\Setup;

use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;

class InstallSchema implements InstallSchemaInterface
{
    public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        //add code here for table create or update
    }
}

2) UpgradeSchema.php : This file is used to update table structure or to create a new table.
This file is get executed whenever your module is installing or upgrading.

There is no version restriction in the file as in magento1, so it will get execute on each version upgradation.
This file executed after Install Schema file.

<?php

namespace Webkul\Test\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)
    {
        //Your code for upgrade data base
    }
}

3) InstallData.php: Used to add data in tables which are already created in your magento.
For example all the product attributes are created by Install Data.
This file gets executed when your module’s Install Schema.

<?php

namespace Webkul\Test\Setup;

use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\InstallDataInterface;

class InstallData implements InstallDataInterface
{
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
    	//code for install data
    }
}

4) UpgradeData.php: Used to add data or update data in tables which are already created in your magento.
For example you can update any existing product’s name or you can create a new product, or can update product’s attribute data.
This gets executed when your module is installing or upgrading.
This file executed after Install Data.

<?php
namespace Webkul\Test\Setup;

use Magento\Framework\Setup\UpgradeDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;

class UpgradeData implements UpgradeDataInterface
{
    public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
    	//your code for Upgrade data
    }
}

5) Recurring.php: This file is used when you want to add some functionality after each module installation.
Lets take an example:
we have three modules Test1, Test2 and Test3.
And we have Recurring.php file in Test1 module.
So, Test1/Setup/Recurring.php get executed after completion of installation of all the above three modules.
Recurruing.php file get executed on each time either module’s version updated or not.

<?php

namespace Webkul\Test\Setup;

use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;

class Recurring implements InstallSchemaInterface
{
    public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
    }
}

6) Uninstall.php : This file is executed when magento module:uninstall get executed.
By this file All the tables and table’s data and files are deleted related to the specific module.
This Uninstall works only on those modules which are composer dependent.

<?php

namespace Webkul\Test\Setup;

use Magento\Framework\Setup\UninstallInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;

class Unistall implements UninstallInterface
{
    public function uninstall(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
    }
}



You can check install schema in detail in blog:
Install Schema In setup script Magento2
You can check install data in detail in blog:
Install Data In setup script Magento2
Another example of Install Data In setup script to create product Magento2

I hope this blog will help you with Setup Script files in Magento 2. You may also check our wide range of best Magento 2 Extensions.

Please reach out to our team via a support ticket if you have any queries.

Try this and if you have any queries then just comment below 🙂

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Back to Top

Message Sent!

If you have more details or questions, you can reply to the received confirmation email.

Back to Home