Magento 2 प्रोग्राम क्रमिक रूप से नया ऑर्डर विशेषता कैसे बनाएं


12

मैं एक ऑर्डर विशेषता बनाने के लिए वेब पर खोज कर रहा हूं (यदि व्हाट्स व्हाट्सएप कहा जाता है), अनिवार्य रूप से मैं चाहता हूं कि एक नया डेटाबेस कॉलम सेल्स_ऑर्डर डेटाबेस में दिखाई दे, जाहिर है कि मैं इसे मैन्युअल रूप से बना सकता हूं लेकिन क्या कोई तरीका है जिससे मैं बना सकता हूं यह एक उन्नयन स्क्रिप्ट / प्रोग्राम के माध्यम से?

जवाबों:


25

व्यावहारिक रूप से, अपग्रेड स्क्रिप्ट के माध्यम से ऑर्डर करने के लिए ऑर्डर विशेषता (एक नया कॉलम) जोड़ने के दो मुख्य तरीके हैं।

- $ सेटअप का उपयोग-> getConnection () -> addColumn ()

एप्लिकेशन / कोड / विक्रेता / SalesOrder / सेटअप / UpgradeSchema.php

<?php

namespace Vendor\SalesOrder\Setup;

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),
                'custom_attribute',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    'length' => 255,
                    'comment' =>'Custom Attribute'
                ]
            );
        //Order table
        $setup->getConnection()
            ->addColumn(
                $setup->getTable($orderTable),
                'custom_attribute',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    'length' => 255,
                    'comment' =>'Custom Attribute'
                ]
            );

        $setup->endSetup();
    }
}

- उद्धरण और बिक्री सेटअप कारखाने का उपयोग करना

एप्लिकेशन / कोड / विक्रेता / SalesOrder / सेटअप / UpgradeData.php

<?php

namespace Vendor\SalesOrder\Setup;

use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\UpgradeDataInterface;
use Magento\Quote\Setup\QuoteSetupFactory;
use Magento\Sales\Setup\SalesSetupFactory;

class UpgradeData implements UpgradeDataInterface
{
    /**
     * @var QuoteSetupFactory
     */
    protected $quoteSetupFactory;

    /**
     * @var SalesSetupFactory
     */
    protected $salesSetupFactory;

    /**
     * @param QuoteSetupFactory $quoteSetupFactory
     * @param SalesSetupFactory $salesSetupFactory
     */
    public function __construct(
        QuoteSetupFactory $quoteSetupFactory,
        SalesSetupFactory $salesSetupFactory
    ) {
        $this->quoteSetupFactory = $quoteSetupFactory;
        $this->salesSetupFactory = $salesSetupFactory;
    }
    /**
     * Upgrades DB for a module
     *
     * @param ModuleDataSetupInterface $setup
     * @param ModuleContextInterface $context
     * @return void
     */
    public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        /** @var \Magento\Quote\Setup\QuoteSetup $quoteInstaller */
        $quoteInstaller = $this->quoteSetupFactory->create(['resourceName' => 'quote_setup', 'setup' => $setup]);

        /** @var \Magento\Sales\Setup\SalesSetup $salesInstaller */
        $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]);

        $setup->startSetup();

        //Add multiple attributes to quote 
        $entityAttributesCodes = [
            'custom_attribute' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
            'custom_attribute1' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT

        ];

        foreach ($entityAttributesCodes as $code => $type) {

            $quoteInstaller->addAttribute('quote', $code, ['type' => $type, 'length'=> 255, 'visible' => false, 'nullable' => true,]);
             $salesInstaller->addAttribute('order', $code, ['type' => $type, 'length'=> 255, 'visible' => false,'nullable' => true,]);
            $salesInstaller->addAttribute('invoice', $code, ['type' => $type, 'length'=> 255, 'visible' => false, 'nullable' => true,]);
        }

        $setup->endSetup();
    }
}

बहुत बहुत धन्यवाद, मैं बस एक समाधान जोड़ने वाला था।
आंद्रे फेरेज़

4
यह केवल आदेश तालिका में खाली अतिरिक्त कॉलम बनाने के लिए है? हम ऑर्डर तालिका में इस अतिरिक्त कॉलम में कस्टम विशेषता से डेटा की प्रतिलिपि कैसे बना सकते हैं?
मैगनेटो लर्नर

1
दो तरीकों से बेहतर क्या है?
एलेक्स

क्या यह विशेषता किसी भी तृतीय पक्ष के आदेश को प्रबंधित करने में एपीआई है?
धड़क मितेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.