Magento2: Как обновить схему базы данных


Я работаю над пользовательским модулем magento, в модуле есть файл Setup\InstallSchema.php, который был установлен ранее. я добавил еще несколько полей базы данных в InstallSchema.php, поэтому я хочу обновить структуру таблицы, но таблица не внесла никаких изменений.

Как я могу применить изменения схемы к таблице базы данных?

У меня есть команды командной строки процесса для обновления схемы, но без успеха.

php bin/magento setup:db-schema:upgrade

И

php bin/magento setup:upgrade
Author: Teja Bhagavan Kollepara, 2015-10-12

2 answers

Если вы хотите добавить больше столбцов в существующую таблицу вашего модуля, вы можете сделать следующее.

Шаг 1: Создание UpgradeSchema.php в папке "Настройка". Получите представление из следующего кода.

namespace Vendor\ModuleName\Setup;

use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
class UpgradeSchema implements  UpgradeSchemaInterface
{
    public function upgrade(SchemaSetupInterface $setup,
                            ModuleContextInterface $context){
        $setup->startSetup();
        if (version_compare($context->getVersion(), '1.0.1') < 0) {

            // Get module table
            $tableName = $setup->getTable('table_name');

            // Check if the table already exists
            if ($setup->getConnection()->isTableExists($tableName) == true) {
                // Declare data
                $columns = [
                    'imagename' => [
                        'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                        'nullable' => false,
                        'comment' => 'image name',
                    ],
                ];

                $connection = $setup->getConnection();
                foreach ($columns as $name => $definition) {
                    $connection->addColumn($tableName, $name, $definition);
                }

            }
        }

        $setup->endSetup();
    }
}

Шаг 2: Измените значение setup_version в module.xml

Шаг 3: Выполните команду php bin/magento setup:upgrade из командной строки

 51
Author: Praful Rajput, 2015-10-12 06:40:51

Для обновления схемы установщика вам необходимо написать'UpgradeSchema.php ',

Пример UpgradeSchema.php :

namespace <namespace>\<modulename>\Setup;

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

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

    $installer->startSetup();

    /*your code here*/

    $installer->endSetup();
}
}

Шаг 2: В вашем модуле вы найдете module.xml внутри папки etc в этом файле измените значение setup_version (например, с 1.0.1 на 1.0.2), значение версии должно быть выше, чем значение текущей версии.

Шаг 3: Запустите php bin/magento установка: команда обновления из командной строки

 2
Author: Sheshgiri Anvekar, 2017-03-22 06:30:48