ম্যাজেন্টো 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.