Magento 2 – Accessing Custom Order Attributes

custom-attributesmagento2

I created an custom attribute for orders:

UpgradeSchema.php

<?php



use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;

class UpgradeSchema implements UpgradeSchemaInterface
{
    /**
     * Upgrades DB schema for a module
     *
     * @param SchemaSetupInterface $setup
     * @param ModuleContextInterface $context
     * @return void
     */
    public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();

        $quote = 'quote';
        $orderTable = 'sales_order';

        $setup->getConnection()
            ->addColumn(
                $setup->getTable($quote),
                'mediabasebestellnummer',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    'length' => 255,
                    'comment' =>'MediabaseNummer'
                ]
            );
        //Order table
        $setup->getConnection()
            ->addColumn(
                $setup->getTable($orderTable),
                'mediabasebestellnummer',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    'length' => 255,
                    'comment' =>'MediabaseNummer'
                ]
            );

        $setup->endSetup();
    }
}

Right now my question is how get the custom attribute when I have an order.
This is NOT working:

$custom = $order->getCustomAttribute('mediabasebestellnummer');

Thanks for any help!

Best Answer

check if the column is created in sales_order table

Now getting the values

 $order->getMediabasebestellnummer();

Or

$order->getData('mediabasebestellnummer');

For adding the data

 $order->setMediabasebestellnummer('test value')->save();

or

 $order->setData('mediabasebestellnummer','test value')->save();

or

$data = array('mediabasebestellnummer'=>'test');
$order->setData($data)->save();`
Related Topic