Em alguns módulos que trabalhamos no dia-a-dia como desenvolvedores Magento 2, precisamos criar uma tabela customizada para o nosso módulo. Neste artigo, falaremos sobre Magento 2 Install Schema.
Magento 2 Install Schema
O Magento 2 já tem uma solução pronta para adicionarmos tabelas customizadas de nossos módulos no seu banco de dados. Para a criação de tabela, nós precisaremos trabalhar com o Setup InstallSchema.
Para isso, criamos um novo módulo chamado Blog em: app/code/ForMage/Blog
Então, criamos o diretório Setup em nosso módulo e a classe InstallSchema, conforme abaixo:
<?php namespace ForMage\Blog\Setup; use Magento\Framework\Setup\InstallSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; use Magento\Framework\DB\Ddl\Table; class InstallSchema implements InstallSchemaInterface { /** * @param SchemaSetupInterface $setup * @param ModuleContextInterface $context */ public function install( SchemaSetupInterface $setup, ModuleContextInterface $context ) { $setup->startSetup(); if (!$setup->tableExists('post')) { $table = $setup->getConnection() ->newTable('post') ->addColumn( 'entity_id', Table::TYPE_INTEGER, null, [ 'identity' => true, 'nullable' => false, 'primary' => true ], 'Entity Id' )->addColumn( 'title', Table::TYPE_TEXT, 255, [ 'nullable' => false ], 'Post Title' )->addColumn( 'description', Table::TYPE_TEXT, null, [ 'nullable' => false ], 'Post Description' )->addColumn( 'created_at', Table::TYPE_TIMESTAMP, null, [ 'nullable' => false, 'default' => Table::TIMESTAMP_INIT ] )->addColumn( 'updated_at', Table::TYPE_TIMESTAMP, null, [ 'nullable' => false, 'default' => Table::TIMESTAMP_INIT_UPDATE ] ); } $setup->getConnection()->createTable($table); $setup->endSetup(); } }
No script acima, nós estamos criando uma tabela customizada chamada post. Nela temos as seguintes colunas: entity_id, title, description, created_at e updated_at.
Note que precisamos implementar a classe Magento\Framework\Setup\InstallSchemaInterface
.
Feito isso, basta rodarmos php bin/magento setup:upgrade
. Consultando o banco de dados, temos a nossa tabela post criada com sucesso:
Importante: O Setup/InstallSchema só será executado uma vez. Após a instalação do módulo, o Magento 2 não executará novamente.
Para maiores explicações, por favor, veja o vídeo acima.
Para mais informações, veja.