Easy steps create and Update Database in Magento 2?

Generate and Upgrade Database in Magento 2

You can follow these methods to Generate and Upgrade Database in Magento 2:

  1. Install Schema
  2. Install Data
  3. Upgrade Schema
  4. Upgrade Data

Magento 2 offers few classes in the directory app/code/[Namespace]/[ModuleName]/Setup to generate or upgrade database.

  • InstallSchema – setup database structure
  • InstallData – establish the data for database table.
  • UpgradeSchema – upgraded database structure
  • UpgradeData – upgraded (add/remove) data from table.

Functions of these classes will be run when we install or upgrade module by this command line:

php bin/magento setup:upgrade

Here, we will make use these classes to install database for Webnexs_

  1. Install Schema
  2. Install Data
  3. Upgrade Schema
  4. Upgrade Data

1. Install Schema

We use module vendor Webnexs and module name is DataExample.

Create file: app/code/Webnexs/DataExample/Setup/InstallSchema.php

<?php

namespace Webnexs\DataExample\Setup;

class InstallSchema implements \Magento\Framework\Setup\InstallSchemaInterface

{

 public function install(

 \Magento\Framework\Setup\SchemaSetupInterface $setup,

 \Magento\Framework\Setup\ModuleContextInterface $context

 ){

 $installer = $setup;

 $installer->startSetup();

 $table = $installer->getConnection()

 ->newTable($installer->getTable('data_example'))

 ->addColumn(

 'example_id',

 \Magento\Framework\Db\Ddl\Table::TYPE_INTEGER,

 null,

 ['identity' => true, 'nullable' => false, 'primary' => true, 'unsigned' => true],

 'Example Id'

 )->addColumn(

 'title',

 \Magento\Framework\Db\Ddl\Table::TYPE_TEXT,

 255,

 ['nullable' => false],

 'Example Title'

 )->addColumn(

 'content',

 \Magento\Framework\Db\Ddl\Table::TYPE_TEXT,

 '2M',

 [],

 'Example Content'

 )->addColumn(

 'created_at',

 \Magento\Framework\Db\Ddl\Table::TYPE_TIMESTAMP,

 null,

 ['nullable' => false, 'default' => \Magento\Framework\Db\Ddl\Table::TIMESTAMP_INIT],

 'Created At'

 );

 $installer->getConnection()->createTable($table);

 $installer->endSetup();

 }

}

?>

In this file, we generate a table, with the name “data_example” with 4 columns: example_id, title, content, created_at with data types are interger, varchar, text, timestamp

You can analyze every data types in this file: \Magento\Framework\Db\Ddl\Table.php

2.  Install Data

File: app/code/Webnexs/DataExample/Setup/InstallData.php

<?php

namespace Webnexs\DataExample\Setup;

use Magento\Framework\Setup\InstallDataInterface;

use Magento\Framework\Setup\ModuleContextInterface;

use Magento\Framework\Setup\ModuleDataSetupInterface;

class InstallData implements InstallDataInterface

{

    protected $_exampleFactory;

    public function __construct(\Webnexs\DataExample\Model\ExampleFactory $exampleFactory)

    {

        $this->_exampleFactory = $exampleFactory;

    }

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

    {

        $data = [

            'title' => "First example title",

            'content' => "First Example content"

        ];

        $example = $this->_exampleFactory->create();

        $example->addData($data)->save();

    }

}



In this file, we insert a row with value for “title” and “content” columns to data_example table.

3.  Upgrade Schema

File: app/code/Webnexs/DataExample/Setup/UpgradeSchema.php

<?php

namespace Webnexs\DataExample\Setup;

use Magento\Framework\Setup\UpgradeSchemaInterface;

use Magento\Framework\Setup\SchemaSetupInterface;

use Magento\Framework\Setup\ModuleContextInterface;

class UpgradeSchema implements UpgradeSchemaInterface

{

 public function upgrade( SchemaSetupInterface $setup, ModuleContextInterface $context ) {

 $installer = $setup;

 $installer->startSetup();

 if(version_compare($context->getVersion(), '1.0.1', '<')) {

 $installer->getConnection()->dropColumn(

 $installer->getTable('data_example'),

 'created_at'

 );

 }

 $installer->endSetup();

 }

}

<span style="font-weight: 400;"> </span>

Note: We have to check module version of in upgrade function. In this example, we upgraded the module from version 1.0.0 to 1.0.1. Drop created_at column from data_example table.

4.  Upgrade Data

File: app/code/Webnexs/DataExample/Setup/UpgradeData.php

<?php

namespace Webnexs\DataExample\Setup;

use Magento\Framework\Setup\UpgradeDataInterface;

use Magento\Framework\Setup\ModuleDataSetupInterface;

use Magento\Framework\Setup\ModuleContextInterface;

class UpgradeData implements UpgradeDataInterface

{

 protected $_exampleFactory;

 public function __construct(\Webnexs\DataExample\Model\ExampleFactory $exampleFactory)

 {

 $this->_exampleFactory = $exampleFactory;

 }

public function upgrade( ModuleDataSetupInterface $setup, ModuleContextInterface $context ) {

 if ( version_compare($context->getVersion(), '1.0.1', '<' )) {

 $data = [

 'title' => "The second example title",

 'content' => "The second example content"

 ];

 $example = $this->_exampleFactory->create();

 $example>addData($dalogta)->save();

 }

 }

}

These are all steps to Create and Upgrade Database in Magento 2. Hope all you guys can learn Magento 2 easier with our series lesson.

The 4 steps mentioned above is the easiest method for you to Generate and Upgrade Database in Magento 2. With this guide, you can manage the Database in Magento 2 easily.

For more Magento tutorials, visit here.

 

 

Last Update: September 5, 2018  

September 5, 2018   121   Praveen Raja    Magento 2 Tutorial  
Total 0 Votes:
0

Tell us how can we improve this post?

+ = Verify Human or Spambot ?

Leave a Reply

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

Facebook
Twitter
INSTAGRAM
LinkedIn