কাস্টম মডিউল সারণীতে নতুন ক্ষেত্র যুক্ত / আপডেট করতে ম্যাজেন্টো 2 আপগ্রেড স্ক্রিপ্ট তৈরি করুন


10

কাস্টম সারণিতে নতুন ক্ষেত্রটি যুক্ত / আপডেট করার জন্য ম্যাজেন্টো 2 (সিই স্থিতিশীল সংস্করণ) আপগ্রেড স্ক্রিপ্ট (কাস্টম-মডিউলটিতে) তৈরি সম্পর্কে কারও কোনও ধারণা / পরামর্শ আছে?

আমি "ইনস্টলশেমিমা" সম্পর্কে জানি কিন্তু মডিউল টেবিলগুলি আপগ্রেড করার জন্য "আপগ্রেডশেমিমা" এর মতো কিছু আছে কি?

উদাহরণ সহ বিস্তারিতভাবে ব্যাখ্যা করুন।


@ প্রদীপ কুমার আপনার উত্তরটি খুব সহায়ক ছিল। শুরুর জন্য ধন্যবাদ। এরপরে আমি আরও কিছুটা গভীর ভিতরে গিয়ে দেখেছি যে, কলামের নাম বা নাম এবং সংজ্ঞা উভয়ই পরিবর্তন করার সময় আমাদের <i> <b> পরিবর্তনকলাম </ b> </i> পদ্ধতিটি ব্যবহার করা উচিত। এবং কলামের সংজ্ঞা পরিবর্তন করতে আমাদের <i> << পরিবর্তন করুন কলাম </ b> </i> ব্যবহার করা উচিত। <i> ম্যাগেন্টো \ ফ্রেমওয়ার্ক \ ডিবি \ অ্যাডাপ্টার \ অ্যাডাপ্টারআইন্টারফেস </ i> এর আরও বিবরণ <i> ম্যাজেন্টো \ সেলসরুল \ সেটআপ \ আপগ্রেডশেচামে </ i> ধন্যবাদ
— সন্দিপন এস

উত্তর:


28

একটি app\code\Sugarcode\Test\Setup\UpgradeSchema.phpএবং রান আপগ্রেড কমান্ড তৈরি করুন

যখন কখনও সংস্করণ পরিবর্তিত হয়েছিল কেবলমাত্র Module.xml পরিবর্তন করুন এবং আপগ্রেডশেমিএইচপিপি সংস্করণের সাথে শর্তের তুলনায় আরও একটি যুক্ত করুন

if (version_compare($context->getVersion(), '2.0.1', '<')) {

            // Changes here.
        }

সুতরাং আপনি যখন আপগ্রেড কমান্ডটি চালাবেন এটি UpgradeSchema.phpফাইল চালাবে এবং এতে এটি সেই সংস্করণটির উপর ভিত্তি করে সংস্করণটির তুলনা করবে যা কোডটি কার্যকর করবে

প্রাক্তন

<?php

namespace Sugarcode\Test\Setup;

use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\DB\Ddl\Table;

class UpgradeSchema implements UpgradeSchemaInterface
{
    public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();
         $tableName = $setup->getTable('testtable');
        if (version_compare($context->getVersion(), '2.0.0') < 0) {
            // Changes here.
        }

        if (version_compare($context->getVersion(), '2.0.1', '<')) {

            // Changes here.
        }
        if (version_compare($context->getVersion(), '2.0.2', '<')) {
              if ($setup->getConnection()->isTableExists($tableName) == true) {
                $connection = $setup->getConnection();
                /* $connection->addColumn(
                    $tableName,
                    'updated_at',
                    ['type' => Table::TYPE_DATETIME,'nullable' => false, 'default' => '', 'afters' => 'created_at'],
                    'Updated At'
                ); */
                $connection->changeColumn(
                    $tableName,
                    'summary',
                    'short_summary',
                    ['type' => Table::TYPE_TEXT, 'nullable' => false, 'default' => ''],
                    'Short Summary'
                );
                // Changes here.
            }
        }


        $setup->endSetup();

    }
}

module.xml

<?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
        <module name="Sugarcode_Test" setup_version="2.0.2" schema_version="2.0.2" />
    </config>

যদি এটি ডান প্রতীকটিতে ক্লিক করে উত্তরটি গ্রহণ করে কাজ করে


1
@ প্রদীপ-কুমার কলামের মন্তব্যে অ্যাড কলাম এবং চেঞ্জ কলাম স্কিমা নামটি আশা করে। public function addColumn($tableName, $columnName, $definition, $schemaName = null);। আপনি মন্তব্যটি 'আপডেট এট' রাখতে পারেন $ সংজ্ঞা অ্যারের মতো ['comment' => 'Updated At']।
— অ্যান্টন এভার্স

@ প্রদীপ, আমার সংস্করণটি "১.০.০", তাই যদি (version_compare ($ প্রসঙ্গ-> getVersion (), '০.০.০', '<'))} এখন এটি কাজ করবে কি না?
— জাফর পিনজার

পুরানো সংস্করণটি কী, যদি পুরানো সংস্করণ কম হয় তবে 1.0.0 তারপর এটি কাজ করে
— প্রদীপ কুমার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.