मैं Magento 2.3 स्थापित करता हूं और कस्टम मॉड्यूल बना रहा हूं।
लेकिन, मुझे नहीं पता कि कैसे Magento 2.3 संस्करण में कस्टम डेटाबेस टेबल बनाया जाए।
मैं Magento 2.3 स्थापित करता हूं और कस्टम मॉड्यूल बना रहा हूं।
लेकिन, मुझे नहीं पता कि कैसे Magento 2.3 संस्करण में कस्टम डेटाबेस टेबल बनाया जाए।
जवाबों:
सबसे पहले, 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"/>
यहाँ, नाम = "नया कॉलम नाम" और onCreate = "migrateDataFrom ()" = "पुराना नाम"
=> यदि आप तालिका को गिराना चाहते हैं, तो आप या तो पूरी फ़ाइल नोड को xml फ़ाइल से निकाल सकते हैं या आप अक्षम विशेषता को अपने अनुसार निम्न पंक्ति में सेट कर सकते हैं db_schema.xml
:
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
अधिक जानकारी के लिए, आप यहां देख सकते हैं ।
आशा है, यह आपके लिए उपयोगी होगा।
अपने किसी भी कस्टम मॉड्यूल में फ़ोल्डर आदि के तहत 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_whitelist_schema.json बनाएं
php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module
उसके बाद बस php bin / magento सेटअप चलाएं : अपग्रेड करें । अधिक जानकारी के लिए आप यहां देख सकते हैं । यदि आपको इस पर अधिक स्पष्टीकरण की आवश्यकता है, तो मुझे बताएं।
Magento 2.3 कोर मॉड्यूल सेटअप अपग्रेड स्क्रिप्ट के बजाय एक घोषणा स्कीमा दृष्टिकोण का उपयोग किया। यह Magento 2.3 और इसके बाद के संस्करण में एक नया अनुशंसित दृष्टिकोण है। Magento 2.3.x अभी भी InstallSchema, InstallData, .. आदि के साथ काम कर रहा है।