Próbuję dodać nową kolumnę do istniejącej tabeli w magento2
<?php
namespace Vendor\Module\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
/**
* @codeCoverageIgnore
*/
class InstallSchema implements InstallSchemaInterface
{
/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$installer = $setup;
$installer->startSetup();
$eavTable = $installer->getTable('eav_attribute');
$columns = [
'my_column' => [
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
'length' => '1',
'nullable' => false,
'comment' => 'Description of my column',
],
];
$connection = $installer->getConnection();
foreach ($columns as $name => $definition) {
$connection->addColumn($eavTable, $name, $definition);
}
$installer->endSetup();
}
}
konfiguracja php bin / magento: aktualizacja
Nic się nie dzieje
Aktualizacja 1.
Jeśli jasno rozumiem cel, program InstallSchema wykonuje się tylko wtedy, gdy w tabeli konfiguracji nie ma żadnych wartości. Jeśli twój moduł jest już zainstalowany w systemie - musisz wprowadzić zmiany w UpgradeSchema. To dlatego, że mój plik się nie uruchomił. Kiedy zmieniłem nazwę, aby zaktualizować i wprowadzić niezbędne zmiany - wszystko zaczęło działać poprawnie
źródło
Usuń wpis modułu z tabeli 'setup_module', a następnie uruchom polecenie php bin / magento setup: upgrade. To będzie działać.
źródło
możesz stworzyć skrypt i folder dbscripts i uruchomić ten plik z terminala lub przeglądarki internetowej.
np. zapisz plik
pub/dbscripts/filename.php
wklej ten kod i zmień zgodnie z wymaganiamiuruchom ten plik z przeglądarki jak
źródło