Я пытаюсь добавить новый столбец в существующую таблицу в 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();
}
}
Настройка php bin / magento: обновление
Ничего не произошло
Upd 1.
Если я четко понимаю цель, InstallSchema выполняется только тогда, когда в таблице настроек нет никаких значений. Если ваш модуль уже установлен в системе - вам нужно внести какие-либо изменения в UpgradeSchema. Это потому, что мой файл не запустился. Когда я переименовал его, чтобы обновить и внести необходимые изменения - все стало работать правильно
источник
Удалите запись модуля из таблицы «setup_module», затем выполните команду php bin / magento setup: upgrade. Это будет работать.
источник
Вы можете создать скрипт и в вашей папке dbscripts и запустить этот файл из терминала или веб-браузера.
например, сохраните файл,
pub/dbscripts/filename.php
вставьте этот код и измените в соответствии с вашими требованиямизапустить этот файл из браузера как
источник