Aparentemente, ahora Magento 2 admite scripts de desinstalación que permiten la modificación del esquema db al desinstalar un módulo (¡horay!).
Como se explica aquí, esto solo funciona para el módulo instalado a través del compositor.
(Espero que funcione en el futuro para todos los módulos, pero ese es un problema diferente).
Digamos que tengo un módulo llamado Testing_Demo.
Este módulo hace 3 cosas que me gustaría eliminar al desinstalarlo.
- agrega una tabla llamada
testing_demo. Entonces necesito dejarlo caer. - agrega un atributo de producto llamado
demo. Entonces esto necesita ser eliminado - tiene algunas configuraciones
system->configurationque podrían o no estar almacenadas en la tablacore_config_data. Todos estos ajustes tienen la rutatesting_demo/.... Por lo tanto, estos también deben eliminarse.
¿Cómo debería ser el script de desinstalación de mi módulo?
module
magento2
install-script
composer
Marius
fuente
fuente

Respuestas:
Buscando en la base de código para
UninstallInterfacedar\Magento\Setup\Model\UninstallCollector.Si busca
UninstallCollectorentonces, encontrará que se usa en\Magento\Setup\Console\Command\ModuleUninstallCommand. Particularmente relevante:En conjunto, podemos suponer:
Uninstallclase en{module}\Setup\Uninstall.php.Magento\Framework\Setup\UninstallInterface.uninstallmétodo que contenga cualquier lógica necesaria.Entonces, aquí está tu esqueleto:
Elimine las tablas, columnas o datos utilizando los métodos adecuados. Ver
\Magento\Framework\DB\Adapter\AdapterInterface, disponible como$setup->getConnection().fuente