Ich installiere das Magento 2.3 und erstelle ein benutzerdefiniertes Modul.
Ich weiß jedoch nicht, wie ich eine benutzerdefinierte Datenbanktabelle in der Magento 2.3-Version erstellen soll.
Ich installiere das Magento 2.3 und erstelle ein benutzerdefiniertes Modul.
Ich weiß jedoch nicht, wie ich eine benutzerdefinierte Datenbanktabelle in der Magento 2.3-Version erstellen soll.
Antworten:
Erstellen Sie zunächst eine db_schema.xml
Datei /RH/Helloworld/etc
und schreiben Sie den folgenden Code:
<?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>
= "Zum Erstellen und Festlegen des Tabellennamens verwenden"<column> .. </column>
= "Zum Erstellen und Festlegen einer Spalte der Tabelle verwenden"<constraint> .. </constraint>
= "Verwendung für festgelegte Einschränkungen wie Primärschlüssel, Fremdschlüssel, eindeutiger Schlüssel usw."Bevor Sie den Upgrade-Befehl ausführen, müssen Sie Ihr Schema zur db_whitelist_schema.json
Datei hinzufügen, indem Sie den folgenden Befehl ausführen:
php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld
Jetzt werden db_whitelist_schema.json
Dateien im /RH/Helloworld/etc
Ordner erstellt.
Jetzt renn los php bin/magento s:up
Die Tabelle wird in der Datenbank erstellt.
=> Wenn Sie eine Spalte umbenennen möchten, müssen Sie db_schema.xml
in der entsprechenden Spalte die folgende Zeile einfügen:
<column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>
hier name = "neuer Spaltenname" und onCreate = "migrateDataFrom ()" = "alter Spaltenname"
=> Wenn Sie eine Tabelle löschen möchten, können Sie entweder den gesamten Tabellenknoten aus der XML-Datei entfernen oder das Attribut disabled auf true setzen, wie in der folgenden Zeile angegeben db_schema.xml
:
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
Weitere Details finden Sie hier .
Hoffe, es wird für Sie hilfreich sein.
Erstellen Sie eine Datei mit dem Namen db_schema.xml im Ordner etc in einem beliebigen benutzerdefinierten Modul.
<?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>
Erstellen Sie nun db_whitelist_schema.json unter demselben Pfad
php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module
Danach führen Sie einfach php bin / magento setup: upgrade aus . Weitere Informationen finden Sie hier . Lassen Sie es mich wissen, falls Sie weitere Erklärungen benötigen.
Besuchen Sie diesen Blog. Vollständiges Tutorial zur Implementierung des deklarativen Schemas in Magento 2.3
https://stagebit.com/magento-2/declarative-schema-magento-2-3/
Magento 2.3-Kernmodule verwendeten anstelle des Setup-Upgrade-Skripts einen deklarativen Schema-Ansatz. Dies ist ein neuer empfohlener Ansatz in Magento 2.3 und höher. Magento 2.3.x arbeitet immer noch mit InstallSchema, InstallData usw.