upgradeSchema не работает в magento 2 - PullRequest
0 голосов
/ 17 марта 2020

Я хочу добавить новый столбец в моей существующей таблице. Я создал файл upgradeSchema. php. И изменили версию в модуле. xml файл. Но после выполнения команды обновления ничего не произошло. Вот мой код

<?php 
namespace Bridge\Tradeuser\Setup; 

use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;

class UpgradeSchema implements UpgradeSchemaInterface
{

/**
 * {@inheritdoc}
 */
public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context) {
    $installer = $setup;

    $installer->startSetup();
            if (version_compare($context->getVersion(), '3.0.1', '<')) {
      $installer->getConnection()
      ->addColumn(
            $installer->getTable('batchcode_entity'),
            'status',
            [
                'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                'length' => 50,
                'nullable' => false,
                'default' => 'Active',
                'comment' => 'Batchcode status'
            ]
        );

    }
    $installer->endSetup();
}
}  
?>

Затем я запускаю следующие команды: bin/magento setup:upgrade

bin/magento setup:static-content:deploy -f

bin/magento setup:di:compile

bin/magento cache:flush

1 Ответ

0 голосов
/ 17 марта 2020

Эй, попробуйте использовать этот метод, просто измените номер версии и имена столбцов, чтобы соответствовать ему, я попробовал прямо сейчас, и это сработало

<?php


namespace SimplifiedMagento\Database\Setup;


use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Db\Ddl\Table;


class UpgradeSchema implements UpgradeSchemaInterface
{

    /**
     * Upgrades DB schema for a module
     *
     * @param SchemaSetupInterface $setup
     * @param ModuleContextInterface $context
     * @return void
     */
    public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
          $setup->startSetup();
          if(version_compare($context->getVersion(),'0.0.2','<'))
          {
                //if version of your project is lower than 0.0.2 then implement this
              $setup->getConnection()->addColumn(
                  $setup->getTable('affiliate_member'),
                  'phonenumber',
                  ['nullable' => false,'type' => Table::TYPE_TEXT,'comment' => 'Phone number column']
              );
          }
          $setup->endSetup();
    }
}

Но убедитесь, что ваш модуль. xml файл имеет аналогичную версию в котором вы написали, если условие:

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="SimplifiedMagento_Database" setup_version="0.0.2">
    </module>
</config>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...