Saya menginstal magento 2.3 dan saya membuat modul khusus.
Tapi, saya tidak tahu cara membuat tabel database khusus di versi magento 2.3.
Saya menginstal magento 2.3 dan saya membuat modul khusus.
Tapi, saya tidak tahu cara membuat tabel database khusus di versi magento 2.3.
Jawaban:
Pertama-tama, buat db_schema.xml
file di dalamnya /RH/Helloworld/etc
dan tulis kode berikut:
<?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>
= "Gunakan untuk membuat dan mengatur nama tabel"<column> .. </column>
= "Gunakan untuk membuat dan mengatur kolom tabel"<constraint> .. </constraint>
= "Gunakan untuk batasan yang disetel seperti kunci primer, kunci asing, kunci unik dll."Sebelum menjalankan perintah peningkatan, Anda perlu menambahkan skema Anda ke db_whitelist_schema.json
file dengan menjalankan perintah berikut:
php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld
Sekarang, ada db_whitelist_schema.json
file yang akan dibuat di /RH/Helloworld/etc
folder.
Sekarang, jalankan php bin/magento s:up
Tabel akan dibuat di dalam basis data.
=> Jika Anda ingin mengganti nama kolom, Anda perlu mengatur baris di bawah ini di db_schema.xml
kolom yang sesuai:
<column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>
di sini, nama = "nama kolom baru" dan onCreate = "migrateDataFrom ()" = "nama kolom lama"
=> Jika Anda ingin menjatuhkan tabel, maka Anda dapat menghapus seluruh simpul tabel dari file xml atau Anda dapat mengatur atribut yang dinonaktifkan menjadi benar seperti di bawah baris di db_schema.xml
:
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
Untuk lebih jelasnya, Anda bisa memeriksanya di sini .
Semoga bermanfaat bagi Anda.
Buat file bernama db_schema.xml di bawah folder dll di setiap modul kustom Anda.
<?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>
Sekarang buat db_whitelist_schema.json di jalur yang sama
php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module
Setelah itu baru jalankan setup php bin / magento: upgrade . Untuk informasi lebih lanjut, Anda dapat memeriksa Di Sini . Beritahu saya jika Anda membutuhkan penjelasan lebih lanjut tentang ini.
Modul inti Magento 2.3 menggunakan pendekatan skema deklaratif alih-alih skrip upgrade pengaturan. Ini adalah pendekatan yang direkomendasikan baru di Magento 2.3 dan di atas. Magento 2.3.x masih bekerja dengan InstallSchema, InstallData, .. dll.