ในโมดูลคุณจะใช้รหัสต่อไปนี้ที่ใช้การฉีดอ้างอิงสำหรับการถอนการติดตั้ง มันทำงานได้ดีเท่าเทียมกันทุกที่อื่นเพียงแค่ให้แน่ใจว่าได้ฉีด EavSetupFactory ลงในตัวสร้างแล้วใช้วิธีการของมันในการทำงาน
<?php
namespace Company\Modulename\Setup {
class Uninstall implements \Magento\Framework\Setup\UninstallInterface
{
protected $eavSetupFactory;
public function __construct(\Magento\Eav\Setup\EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
public function uninstall(\Magento\Framework\Setup\SchemaSetupInterface $setup, \Magento\Framework\Setup\ModuleContextInterface $context)
{
$setup->startSetup();
$eavSetup = $this->eavSetupFactory->create();
$entityTypeId = 1; // Find these in the eav_entity_type table
$eavSetup->removeAttribute($entityTypeId, 'attribute_code');
$setup->endSetup();
}
}
}
นอกจากนี้การใช้วิธีนี้จะทำให้แอตทริบิวต์ eav ลบตัวเองออกจากตารางทั้งหมดอย่างถูกต้องเนื่องจากมีการเชื่อมโยงโดยใช้ข้อ จำกัด
BTW ฉันแนะนำให้ใช้ PHPStorm + xdebug คุณจะได้เรียนรู้มากมายเกี่ยวกับสิ่งต่าง ๆ เหล่านี้เชื่อมต่อกัน