কাস্টম মডিউল সারণীতে নতুন ক্ষেত্র যুক্ত / আপডেট করতে ম্যাজেন্টো 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.