ম্যাজেন্টো 2 কীভাবে প্রোগ্রামে নতুন অর্ডার অ্যাট্রিবিউট তৈরি করবেন


12

আমি কীভাবে একটি অর্ডার অ্যাট্রিবিউট (কী বলা হয়) তৈরি করতে ওয়েবে অনুসন্ধান করছি, মূলত আমি কেবল বিক্রয়_র্ডার ডাটাবেসে একটি নতুন ডাটাবেস কলাম হাজির করতে চাই, স্পষ্টতই আমি নিজে এটি তৈরি করতে পেরেছিলাম তবে কি এমন উপায় আছে যা আমি তৈরি করতে পারি এটি কোনও আপগ্রেড স্ক্রিপ্ট / প্রোগ্রামমেটিকের মাধ্যমে?

উত্তর:


25

ব্যবহারিকভাবে, একটি আপগ্রেড স্ক্রিপ্টের মাধ্যমে অর্ডার করতে একটি অর্ডার অ্যাট্রিবিউট (একটি নতুন কলাম) যুক্ত করার দুটি প্রধান উপায় রয়েছে।

- $ সেটআপ-> getConnication () -> অ্যাড কলাম () ব্যবহার করে

অ্যাপ্লিকেশন / কোড / বিক্রেতা / 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
দুটি উপায়ে আরও ভাল কি?
— অ্যালেক্স

এই বৈশিষ্ট্যটি কোনও তৃতীয় পক্ষের অর্ডার এপিআই পরিচালনা করে?
— duদুক মিতেশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.