Domanda

I have been trying to create a new order attribute in Magento 2, but not successful yet.

I have created a new module and this is already showing.

I added the different codes available in my setup InstallData.php but nothing worked so far.

Anybody who have successfully created an order attribute?

This is one of the code I have tried in InstallSchema.php

<?php
namespace Namespace\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();

    $installer->getConnection()->addColumn(
        $installer->getTable('quote'),
        'delivery_eta',
        [
            'type' => 'varchar',
            'nullable' => false,
            'comment' => 'Delivery ETA',
        ]
    );

    $installer->getConnection()->addColumn(
        $installer->getTable('sales_order'),
        'delivery_eta',
        [
            'type' => 'datetime',
            'nullable' => false,
            'comment' => 'Delivery ETA',
        ]
    );

    $setup->endSetup();
   }
}
È stato utile?

Soluzione

The schema scripts is to create a database structure. For example, creating a table and add columns to existing table. The install data scripts is to manage the data within existing tables, adding some sample data to tables.

At first time, we run php bin/magento setup:upgrade, Magento will execute the files in following order: (Creating table structure first, and then add the data to table)

  • InstallSchema.php
  • UpgradeSchema.php
  • InstallData.php
  • UpgradeData.php

In the next time, run setup upgrade command again, only two files:

  • UpgradeSchema.php
  • UpgradeData.php

So in your case, when editing the install data script that will not effect your database anymore. If we want to re-install, we may need to remove our module from table setup_module table (and, may need to remove the old database). And run setup upgrade command again.

For the adding new order attribute, we should take a look: https://magento.stackexchange.com/a/131969/33057

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top