ম্যাজেন্টো ২.৩: কীভাবে কাস্টম মডিউলে ঘোষিত স্কিমা বাস্তবায়ন করবেন implement


14

আমি ম্যাজেন্টো ২.৩ ইনস্টল করেছি এবং আমি কাস্টম মডিউল তৈরি করছি।

তবে, আমি জানি না কীভাবে ম্যাজেন্টো ২.৩ সংস্করণে কাস্টম ডাটাবেস টেবিল তৈরি করবেন।


2
Magento ডাটাবেসে ডাটাবেস বা কাস্টম টেবিল?
পবন

উত্তর:


39

প্রথমত, db_schema.xmlভিতরে ফাইল তৈরি করুন /RH/Helloworld/etcএবং নিম্নলিখিত কোডটি লিখুন:

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
    <table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld">
        <column xsi:type="smallint" name="id" padding="6" unsigned="false" nullable="false" identity="true" comment="ID"/>
        <column xsi:type="varchar" name="author_name" nullable="false" length="25" comment="Name"/>
        <column xsi:type="varchar" name="email" nullable="false" length="25" comment="Email"/>
        <column xsi:type="varchar" name="description" nullable="false" length="255" comment="Descrition"/>
        <constraint xsi:type="primary" referenceId="PRIMARY">
            <column name="id"/>
        </constraint>
    </table>
</schema>
  • <table> .. </table> = "সারণির নাম তৈরি এবং সেট করার জন্য ব্যবহার করুন"
  • <column> .. </column> = "সারণির কলাম তৈরি এবং সেট করার জন্য ব্যবহার করুন"
  • <constraint> .. </constraint> = "প্রাথমিক বাধা, বিদেশী কী, অনন্য কী ইত্যাদির মতো সেট সীমাবদ্ধতার জন্য ব্যবহার করুন" "

আপগ্রেড কমান্ড চালানোর আগে আপনাকে db_whitelist_schema.jsonনিম্নলিখিত কমান্ডটি চালিয়ে আপনার স্কিমা ফাইল করতে হবে:

php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld

এখন, db_whitelist_schema.jsonফাইল আছে /RH/Helloworld/etcফোল্ডারে তৈরি করা হবে ।

এখন, চালান php bin/magento s:up

সারণী ডাটাবেসের ভিতরে তৈরি করা হবে।

=> আপনি যদি কোনও কলামটির নাম পরিবর্তন করতে চান তবে আপনার db_schema.xmlউপযুক্ত কলামে আপনার রেখার নীচে সেট করতে হবে :

<column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>

এখানে, নাম = "নতুন কলামের নাম" এবং অনক্রিট = "মাইগ্রেটডাটাফ্রোম ()" = "পুরানো কলামের নাম"

=> আপনি যদি টেবিলটি ড্রপ করতে চান, তবে আপনি এক্সএমএল ফাইল থেকে পুরো টেবিল নোডটি সরিয়ে ফেলতে পারেন বা আপনি অক্ষম বৈশিষ্ট্যটিকে আপনার নিচের লাইনের মতোই সেট করতে পারেন db_schema.xml:

<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
 ..
 </table>

আরও তথ্যের জন্য, আপনি এখানে চেক করতে পারেন ।

আশা করি, এটি আপনার জন্য সহায়ক হবে।


1
ভাল একটি @ রোহান
রামকিশন সুতার

সুন্দর ব্যাখ্যা ..... আপনাকে অনেক ধন্যবাদ .... এটি সত্যিই সহায়ক ....
কঠোর খাঁধার

সাহায্য করতে পারলে খুশি !! শুভ কোডিং :) এবং আপনাকে ধন্যবাদ রমকিশনসুতর
রোহান হাপানী

আমাদের কেন db_Witelist_schema.json তৈরি করা দরকার?
রামানাথন

@ রোহনহাপানি কাস্টম এক্সটেনশানটি ব্যবহার করে আমি কীভাবে ম্যাজেন্টো ২.৩.০ এ কাস্টম পণ্য বৈশিষ্ট্য তৈরি করতে পারি?
কিশান পাতাদিয়া

12

আপনার যে কোনও কাস্টম মডিউলে ইত্যাদি ফোল্ডারের অধীনে db_schema.xML নামে ফাইল তৈরি করুন ।

<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
    <table name="books_data" resource="default" engine="innodb" comment="Book Table">
        <column xsi:type="smallint" name="id" padding="6" unsigned="false" nullable="false" identity="true" comment="BOOK ID"/>
        <column xsi:type="varchar" name="book_name" nullable="false" length="255" comment="Book Name"/>
        <column xsi:type="int" name="author" unsigned="true" nullable="true" identity="false" default="" comment="Author"/>
        <column xsi:type="varchar" name="isbn_no" nullable="true" comment="ISBN No"/>
        <column xsi:type="timestamp" name="publish_date" on_update="false" nullable="false" default="CURRENT_TIMESTAMP"
                comment="Publish Date"/>
      <column xsi:type="varchar" name="language" nullable="true" comment="Language"/>
         <column xsi:type="decimal" name="mrp" scale="4" precision="12" unsigned="false" nullable="false"
                default="0" comment="MRP"/>
        <constraint xsi:type="primary" name="PRIMARY">
            <column name="id"/>
        </constraint>
    </table>

    <table name="author_data" resource="default" engine="innodb" comment="Author Table">
        <column xsi:type="smallint" name="id" padding="6" unsigned="false" nullable="false" identity="true" comment="Author ID"/>
        <column xsi:type="varchar" name="author_name" nullable="false" length="255" comment="Author Name"/>
        <column xsi:type="varchar" name="author_email" nullable="false" length="255" comment="Author Email"/>
        <column xsi:type="varchar" name="affliation" nullable="false" length="255" comment="Affliation"/>
        <column xsi:type="int" name="age" unsigned="true" nullable="true" identity="false" default="" comment="Age"/>
        <constraint xsi:type="primary" name="PRIMARY">
            <column name="id"/>
        </constraint>
    </table>
</schema>

এখন একই পথে db_Witelist_schema.json তৈরি করুন

php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module

এর পরে কেবল পিএইচপি বিন / ম্যাজেন্টো সেটআপ চালান : আপগ্রেড করুন । আরও তথ্যের জন্য আপনি এখানে চেক করতে পারেন । এই বিষয়ে আপনার আরও ব্যাখ্যা প্রয়োজন হলে আমাকে জানান।


তবে ... এটি উপরের মত একই উত্তর। কেন ডাবল পোস্ট?
জিস রিটসমা

@ জিসেরিটসমা উপরের উত্তরের আগে পোস্ট করেছি। উভয় উত্তর পরীক্ষা করে দেখুন।
রামকিশন সুথার 14'19

আমার খারাপ: মূল পোস্টটি তৈরি হওয়ার 14 মিনিটের মধ্যে আপনি দু'জনেই প্রশ্নের উত্তর দিয়েছিলেন এবং আপনি কিছুটা দ্রুত হয়েছিলেন। দেখে মনে হচ্ছে আপনি ছেলেরা যত তাড়াতাড়ি সম্ভব একটি নতুন প্রশ্নের উত্তর দেওয়ার জন্য একটি খেলা তৈরি করেছেন :)
জিস রিটসমা

1
উত্তর নিখুঁত। আমি আরও কিছু তথ্য যুক্ত করতে চাই: পুরাতন পদ্ধতির (ইনস্টলশেমিমা) মূল অসুবিধাটি হ'ল ম্যাজেন্টো অন্ধভাবে পরিবর্তনগুলি প্রয়োগ করে। উদাহরণস্বরূপ, একটি সংস্করণে একটি নতুন ডাটাবেস কলাম প্রবর্তিত হতে পারে, কেবল পরবর্তীটিতে সরাতে হবে। ঘোষণামূলক সেটআপ এই ধরণের অপ্রয়োজনীয় কাজকে সরিয়ে দেয়।
হাফিজ উমর

0

ম্যাজেন্টো ২.৩ কোর মডিউলগুলি সেটআপ আপগ্রেড স্ক্রিপ্টের পরিবর্তে ঘোষিত স্কিমা পদ্ধতির ব্যবহার করেছে। এটি Magento 2.3 এবং তদূর্ধের একটি নতুন প্রস্তাবিত পদ্ধতি। ম্যাজেন্টো ২.৩.x এখনও ইনস্টলশেমা, ইনস্টলডাটা, .. ইত্যাদি নিয়ে কাজ করছে

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