Trong Magento 2 - Làm cách nào để xóa một cột trong bảng customer_entity?


9

Trong Magento 2, Làm thế nào để loại bỏ một cột trong customer_entitybảng?

Câu trả lời:


14

Trong tập lệnh thiết lập của bạn, chúng tôi có thể sử dụng dropColumn:

 $setup->getConnection()->dropColumn($setup->getTable('your_table'), 'your_column');

làm với UpgradeSchema.php là một giải pháp tốt hơn và sạch hơn
Blueblazer172

7

Đây là giải pháp của tôi, có thể tốt cho việc giới thiệu cho người khác.
Tôi đã tạo Tohq\Customer\Setup\UpgradeSchema.phptập tin:

<?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');
            }
        }

    }
}

6

Bạn có thể thử hàm dropColumn () đơn giản này trong tập lệnh cài đặt của bạn .

$this->startSetup();

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

$this->endSetup();

cảm ơn câu trả lời của bạn
MrTo-Kane

1

Đường dẫn: Magento22 / app / code / Rbj / Đào tạo / 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>

Tạo tập tin Nâng cấpSchema.php trong thư mục Cài đặt trong mô-đun của bạn.

Đường dẫn: Magento22 / ứng dụng / mã / Rbj / Đào tạo / Cài đặt / Nâng cấpSchema.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();
        }
    }

Tôi hy vọng nó hoạt động mãi mãi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.