In Magento 2 - Wie entferne ich eine Spalte in der Tabelle customer_entity?

9

Wie entferne ich in Magento 2 eine Spalte in einer customer_entityTabelle?

MrTo-Kane
quelle

Antworten:

14

In Ihrem Setup-Skript können wir Folgendes verwenden dropColumn:

 $setup->getConnection()->dropColumn($setup->getTable('your_table'), 'your_column');
Khoa TruongDinh
quelle
tun mit UpgradeSchema.php ist eine bessere und sauberere Lösung
Blueblazer172
7

Hier ist meine Lösung, vielleicht gut, um auf andere zu verweisen.
Ich habe eine Tohq\Customer\Setup\UpgradeSchema.phpDatei erstellt:

<?php

namespace Tohq\Customer\Setup;

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

/**
 * @codeCoverageIgnore
 */
class UpgradeSchema implements UpgradeSchemaInterface
{
    public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {            
        // Version of module in setup table is less then the give value.
        if (version_compare($context->getVersion(), '0.1.4', '<')) {

            // get table customer_entity
            $eavTable = $setup->getTable('customer_entity');

            // Check if the table already exists
            if ($setup->getConnection()->isTableExists($eavTable) == true) {
                $connection = $setup->getConnection();

                // del_flg = column name which you want to delete
                $connection->dropColumn($eavTable, 'del_flg');
            }
        }

    }
}
MrTo-Kane
quelle
6

Sie können diese einfache dropColumn () - Funktion in Ihrem Installationsskript ausprobieren .

$this->startSetup();

//example: 
$this->getConnection()->dropColumn($this->getTable('your_table_definition'), 'your column name', $schemaName = null)

$this->endSetup();
Chirag
quelle
Danke für deine Antwort!
MrTo-Kane
1

Pfad: Magento22 / app / code / Rbj / Training / etc / module.xml

<?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="Rbj_Training" setup_version="1.0.2"/>
</config>

Erstellen Sie die Datei UpgradeSchema.php im Ordner Setup Ihres Moduls.

Pfad: Magento22 / app / code / Rbj / Training / Setup / UpgradeSchema.php

<?php
    namespace Rbj\Training\Setup;

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

    /**
     * Upgrade the Sales_Order Table to remove extra field
     */
    class UpgradeSchema implements UpgradeSchemaInterface
    {

        public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
        {
            $setup->startSetup();
            if (version_compare($context->getVersion(), '1.0.2', '<')) {
                $setup->getConnection()->dropColumn($setup->getTable('sales_order'), 'gst');
            }
            $setup->endSetup();
        }
    }

Ich hoffe, es ist Arbeit für immer

Baharuni Asif
quelle