J'essaie d'ajouter une nouvelle colonne à la table existante dans magento2
<?php
namespace Vendor\Module\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
/**
* @codeCoverageIgnore
*/
class InstallSchema implements InstallSchemaInterface
{
/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$installer = $setup;
$installer->startSetup();
$eavTable = $installer->getTable('eav_attribute');
$columns = [
'my_column' => [
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
'length' => '1',
'nullable' => false,
'comment' => 'Description of my column',
],
];
$connection = $installer->getConnection();
foreach ($columns as $name => $definition) {
$connection->addColumn($eavTable, $name, $definition);
}
$installer->endSetup();
}
}
configuration de php bin / magento: mise à niveau
Il ne se passe rien
Upd 1.
Si je comprends clairement l'objectif, InstallSchema s'exécute uniquement lorsqu'il n'y a aucune valeur dans la table de configuration. Si votre module est déjà installé dans le système - vous devez apporter des modifications dans UpgradeSchema. Cela parce que mon fichier ne s'est pas exécuté. Quand je l'ai renommé pour mettre à niveau et apporter les modifications nécessaires - tout a commencé à fonctionner correctement
la source
Supprimez l'entrée du module de la table 'setup_module' puis exécutez la commande php bin / magento setup: upgrade. Ça va marcher.
la source
vous pouvez créer un script et dans votre dossier dbscripts et exécuter ce fichier à partir du terminal ou du navigateur Web.
par exemple enregistrer le fichier dans
pub/dbscripts/filename.php
coller ce code et modifier selon vos besoinsexécutez ce fichier à partir du navigateur comme
la source