Como criar/atualizar tabelas com InstallSchema e UpgradeShema no Magento 2
24920 단어 phpbraziliandevstutorialmagento2
컨텍스트리잔도
설치 스키마 e 업그레이드 스키마, que criam scripts para processar o código em SQL e automaticamente inserir as atualizações no.ban
instalações e atualizações de esquema로 활용하시겠습니까?
클래스로 설치 스키마 및 업그레이드 스키마 제공, 변경 및 변경이 불가능합니다. E elas devem ser usadas em versões anteriores a versão 2.3 do Magento 2, mas para versões posteriores é recomendado o uso de classes do tipo Schema Patch e do db_schema.xml
.
클래스에 따라 사용 가능한 결정에 대한 아웃트로 스키마 설치 e 업그레이드 스키마와 호환되지 않는 모드, 카소 a 테이블에 있는 정보 db_schema.xml
ou 스키마 패치, as alteraçõesita Schema Patch tipo 스키마를 설치하거나 스키마를 업그레이드합니다.
Saiba como criar uma tabela Personalizada 게시물이 없습니다.
Código para a criação/alteração de uma tabela
스키마 설치
essa classe será executada quando o modulo for instalado para configurar a estrutura do banco de dados, ou seja, este tipo de classe deve ser utilizado para criar, alterar ou remover uma tabela no banco de dados.
A classe install Schema deve seguir a estrutura de 파스타s \{Vendor}\{Module}\Setup\InstallSchema
e 개발 구현 a interface \Magento\Framework\Setup\InstallSchemaInterface
, que obriga a classe a implementationar o metodo install(\Magento\Framework\Setup\SchemaSetupInterface $setup, \Magento\Framework\Setup\ModuleContextInterface $context)
. 인터페이스SchemaSetupInterface
gera através de injeção de 의존적 um objeto de configuração que fornece muitas funções para interagir com o servidor do banco de dados. 인터페이스ModuleContextInterface
possui apenas o métodogetVersion()
, que retorna a versão atual do modulo, ou seja, retorna o valor do atributosetup_version
do arquivomodule.xml
<?php
namespace {Vendor}\{Module}\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\DB\Ddl\Table;
class InstallSchema implements InstallSchemaInterface
{
public const TABLE_NAME = '{table_name}';
public function install(
SchemaSetupInterface $setup,
ModuleContextInterface $context
): void {
$setup->startSetup();
if (!$setup->tableExists(self::TABLE_NAME)) {
// Add primary column
$table = $setup->getConnection()->newTable(
$setup->getTable(self::TABLE_NAME)
)->addColumn(
'{entity_column_id}',
Table::TYPE_INTEGER,
null,
[
'identity' => true,
'nullable' => false,
'primary' => true,
'unsigned' => true,
],
'{Entity Table ID}'
);
// Add text type column
$table->addColumn(
'{column_type_text}',
Table::TYPE_TEXT,
255,
[
'nullable' => {true/false}
],
'{Column Type TEXT}'
);
// Add int type column
$table->addColumn(
'{column_type_integer}',
Table::TYPE_INTEGER,
10,
[],
'{Column Type INTEGER}'
);
// Add bool type column
$table->addColumn(
'{column_type_boolean}',
Table::TYPE_BOOLEAN,
1,
[
'nullable' => {true/false},
'default' => 0
],
'{Column Type BOOLEAN}'
);
// Add float type column
$table->addColumn(
'{column_type_float}',
Table::TYPE_FLOAT,
null,
[
'default' => 0
],
'{Column Type FLOAT}'
);
// Add date type column
$table->addColumn(
'{column_type_date}',
Table::TYPE_DATE,
null,
[],
'{Column Type DATE}'
);
// Add datetime type column
$table->addColumn(
'{column_type_datetime}',
Table::TYPE_DATETIME,
null,
[
'nullable' => {true/false},
],
'{Column Type DATETIME}'
);
// Add created_at type column
$table->addColumn(
'created_at',
Table::TYPE_TIMESTAMP,
null,
[
'nullable' => {true/false},
'default' => Table::TIMESTAMP_INIT
],
'Created At'
);
// Add updated_at type column
$table->addColumn(
'updated_at',
Table::TYPE_TIMESTAMP,
null,
[
'nullable' => {true/false},
'default' => Table::TIMESTAMP_INIT_UPDATE
],
'Updated At'
)->setComment('{Comment About Table}');
$setup->getConnection()->createTable($table);
$setup->endSetup();
}
}
}
업그레이드 스키마
Essa classe será executada quando o modulo for instalado ou toda vez que o que for atualizado, ou seja, este tipo de classe deve ser utilizada para criar ou alterar uma tabela no banco de dados. Um módulo é atualizado quando a versão do modulo, que pode ser encontrado no atributo setup_version
do arquivo module.xml
, com a valor do atributo é possível configurar diferentes funcóional .
A classe Upgrade Schema deve seguir a estrutura de 파스타s \{Vendor}\{Module}\Setup\UpgradeSchema
e deveimplementar a interface \Magento\Framework\Setup\InstallSchemaInterface
, que obriga a classe aimplementar o metodo upgrade(\Magento\Framework\Setup\SchemaSetupInterface $setup, \Magento\Framework\Setup\ModuleContextInterface $context)
. 인터페이스SchemaSetupInterface
gera através de injeção de 의존적 um objeto de configuração que fornece muitas funções para interagir com o servidor do banco de dados. 인터페이스ModuleContextInterface
possui apenas o métodogetVersion()
, que retorna a versão atual do modulo, ou seja, retorna o valor do atributosetup_version
do arquivomodule.xml
<?php
namespace {Vendor}\{Module}\Setup;
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\DB\Ddl\Table;
class UpgradeSchema implements UpgradeSchemaInterface
{
public const TABLE_NAME = '{table_name}';
public function upgrade(
SchemaSetupInterface $setup,
ModuleContextInterface $context
): void {
$setup->startSetup();
if (version_compare($context->getVersion(), '{version_to_implement}', '<')) {
$this->upgradeNumberVersion($setup);
}
$setup->endSetup();
}
private function upgradeNumberVersion(SchemaSetupInterface $setup): void
{
// Add new column to table
$setup->getConnection()->addColumn(
$setup->getTable(self::TABLE_NAME),
'{new_column}',
[
'type' => Table::TYPE_{NAME},
'nullable' => {true/false},
'length' => '{length}',
'comment' => '{column comment}',
'after' => '{column_name}'
]
);
// Add new foreign key to table
$setup->getConnection()->addForeignKey(
$setup->getFkName(
self::TABLE_NAME,
'{entity_column}',
'{main_table}',
'{main_column}'
),
'{entity_column}',
$setup->getTable('{main_table}'),
'{main_column}',
Table::ACTION_CASCADE
);
// Add new index column to table
$setup->getConnection()->addIndex(
$setup->getTable(self::TABLE_NAME),
$setup->getIdxName(self::TABLE_NAME, ['{column_name}']),
['{column_name}'],
);
// Change column to table
$setup->getConnection()->changeColumn(
$setup->getTable(self::TABLE_NAME),
'{old_column_name}',
'{new_column_name}',
[
'type' => Table::TYPE_{NAME},
'nullable' => {true/false},
'comment' => '{Column Comment}',
]
);
// Remove column from table
$setup->getConnection()->dropColumn(
$setup->getTable(self::TABLE_NAME),
'{column_name}'
);
}
}
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="{Vendor}_{Module}" setup_version="{version_number}" />
</config>
피날리잔도
Valores entre chaves ({test}
) devem ser alterados na implementação do código.
Habilitando Habilitando as alterações
Comando para atualizar os dados do banco de dados e o esquema do banco de dados.
php bin/magento setup:upgrade
디레토리오스 에 아르키보스
세게 a lista de diretórios e arquivos que devem ser criados.
- app/
- code/
- {Vendor}/
- {Module}/
- etc/
- module.xml
- Setup/
- InstallSchema.php
- UpgradeSchema.php
- registration.php
- composer.json
Reference
이 문제에 관하여(Como criar/atualizar tabelas com InstallSchema e UpgradeShema no Magento 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/santanaluc94/como-criaratualizar-tabelas-com-installschema-e-upgradeshema-264p
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
스키마 설치
essa classe será executada quando o modulo for instalado para configurar a estrutura do banco de dados, ou seja, este tipo de classe deve ser utilizado para criar, alterar ou remover uma tabela no banco de dados.
A classe install Schema deve seguir a estrutura de 파스타s
\{Vendor}\{Module}\Setup\InstallSchema
e 개발 구현 a interface \Magento\Framework\Setup\InstallSchemaInterface
, que obriga a classe a implementationar o metodo install(\Magento\Framework\Setup\SchemaSetupInterface $setup, \Magento\Framework\Setup\ModuleContextInterface $context)
. 인터페이스SchemaSetupInterface
gera através de injeção de 의존적 um objeto de configuração que fornece muitas funções para interagir com o servidor do banco de dados. 인터페이스ModuleContextInterface
possui apenas o métodogetVersion()
, que retorna a versão atual do modulo, ou seja, retorna o valor do atributosetup_version
do arquivomodule.xml
<?php
namespace {Vendor}\{Module}\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\DB\Ddl\Table;
class InstallSchema implements InstallSchemaInterface
{
public const TABLE_NAME = '{table_name}';
public function install(
SchemaSetupInterface $setup,
ModuleContextInterface $context
): void {
$setup->startSetup();
if (!$setup->tableExists(self::TABLE_NAME)) {
// Add primary column
$table = $setup->getConnection()->newTable(
$setup->getTable(self::TABLE_NAME)
)->addColumn(
'{entity_column_id}',
Table::TYPE_INTEGER,
null,
[
'identity' => true,
'nullable' => false,
'primary' => true,
'unsigned' => true,
],
'{Entity Table ID}'
);
// Add text type column
$table->addColumn(
'{column_type_text}',
Table::TYPE_TEXT,
255,
[
'nullable' => {true/false}
],
'{Column Type TEXT}'
);
// Add int type column
$table->addColumn(
'{column_type_integer}',
Table::TYPE_INTEGER,
10,
[],
'{Column Type INTEGER}'
);
// Add bool type column
$table->addColumn(
'{column_type_boolean}',
Table::TYPE_BOOLEAN,
1,
[
'nullable' => {true/false},
'default' => 0
],
'{Column Type BOOLEAN}'
);
// Add float type column
$table->addColumn(
'{column_type_float}',
Table::TYPE_FLOAT,
null,
[
'default' => 0
],
'{Column Type FLOAT}'
);
// Add date type column
$table->addColumn(
'{column_type_date}',
Table::TYPE_DATE,
null,
[],
'{Column Type DATE}'
);
// Add datetime type column
$table->addColumn(
'{column_type_datetime}',
Table::TYPE_DATETIME,
null,
[
'nullable' => {true/false},
],
'{Column Type DATETIME}'
);
// Add created_at type column
$table->addColumn(
'created_at',
Table::TYPE_TIMESTAMP,
null,
[
'nullable' => {true/false},
'default' => Table::TIMESTAMP_INIT
],
'Created At'
);
// Add updated_at type column
$table->addColumn(
'updated_at',
Table::TYPE_TIMESTAMP,
null,
[
'nullable' => {true/false},
'default' => Table::TIMESTAMP_INIT_UPDATE
],
'Updated At'
)->setComment('{Comment About Table}');
$setup->getConnection()->createTable($table);
$setup->endSetup();
}
}
}
업그레이드 스키마
Essa classe será executada quando o modulo for instalado ou toda vez que o que for atualizado, ou seja, este tipo de classe deve ser utilizada para criar ou alterar uma tabela no banco de dados. Um módulo é atualizado quando a versão do modulo, que pode ser encontrado no atributo
setup_version
do arquivo module.xml
, com a valor do atributo é possível configurar diferentes funcóional .A classe Upgrade Schema deve seguir a estrutura de 파스타s
\{Vendor}\{Module}\Setup\UpgradeSchema
e deveimplementar a interface \Magento\Framework\Setup\InstallSchemaInterface
, que obriga a classe aimplementar o metodo upgrade(\Magento\Framework\Setup\SchemaSetupInterface $setup, \Magento\Framework\Setup\ModuleContextInterface $context)
. 인터페이스SchemaSetupInterface
gera através de injeção de 의존적 um objeto de configuração que fornece muitas funções para interagir com o servidor do banco de dados. 인터페이스ModuleContextInterface
possui apenas o métodogetVersion()
, que retorna a versão atual do modulo, ou seja, retorna o valor do atributosetup_version
do arquivomodule.xml
<?php
namespace {Vendor}\{Module}\Setup;
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\DB\Ddl\Table;
class UpgradeSchema implements UpgradeSchemaInterface
{
public const TABLE_NAME = '{table_name}';
public function upgrade(
SchemaSetupInterface $setup,
ModuleContextInterface $context
): void {
$setup->startSetup();
if (version_compare($context->getVersion(), '{version_to_implement}', '<')) {
$this->upgradeNumberVersion($setup);
}
$setup->endSetup();
}
private function upgradeNumberVersion(SchemaSetupInterface $setup): void
{
// Add new column to table
$setup->getConnection()->addColumn(
$setup->getTable(self::TABLE_NAME),
'{new_column}',
[
'type' => Table::TYPE_{NAME},
'nullable' => {true/false},
'length' => '{length}',
'comment' => '{column comment}',
'after' => '{column_name}'
]
);
// Add new foreign key to table
$setup->getConnection()->addForeignKey(
$setup->getFkName(
self::TABLE_NAME,
'{entity_column}',
'{main_table}',
'{main_column}'
),
'{entity_column}',
$setup->getTable('{main_table}'),
'{main_column}',
Table::ACTION_CASCADE
);
// Add new index column to table
$setup->getConnection()->addIndex(
$setup->getTable(self::TABLE_NAME),
$setup->getIdxName(self::TABLE_NAME, ['{column_name}']),
['{column_name}'],
);
// Change column to table
$setup->getConnection()->changeColumn(
$setup->getTable(self::TABLE_NAME),
'{old_column_name}',
'{new_column_name}',
[
'type' => Table::TYPE_{NAME},
'nullable' => {true/false},
'comment' => '{Column Comment}',
]
);
// Remove column from table
$setup->getConnection()->dropColumn(
$setup->getTable(self::TABLE_NAME),
'{column_name}'
);
}
}
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="{Vendor}_{Module}" setup_version="{version_number}" />
</config>
피날리잔도
Valores entre chaves ({test}
) devem ser alterados na implementação do código.
Habilitando Habilitando as alterações
Comando para atualizar os dados do banco de dados e o esquema do banco de dados.
php bin/magento setup:upgrade
디레토리오스 에 아르키보스
세게 a lista de diretórios e arquivos que devem ser criados.
- app/
- code/
- {Vendor}/
- {Module}/
- etc/
- module.xml
- Setup/
- InstallSchema.php
- UpgradeSchema.php
- registration.php
- composer.json
Reference
이 문제에 관하여(Como criar/atualizar tabelas com InstallSchema e UpgradeShema no Magento 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/santanaluc94/como-criaratualizar-tabelas-com-installschema-e-upgradeshema-264p
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Valores entre chaves ({test}
) devem ser alterados na implementação do código.
php bin/magento setup:upgrade
- app/
- code/
- {Vendor}/
- {Module}/
- etc/
- module.xml
- Setup/
- InstallSchema.php
- UpgradeSchema.php
- registration.php
- composer.json
Reference
이 문제에 관하여(Como criar/atualizar tabelas com InstallSchema e UpgradeShema no Magento 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/santanaluc94/como-criaratualizar-tabelas-com-installschema-e-upgradeshema-264p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)