Instalo el magento 2.3 y estoy creando un módulo personalizado.
Pero, no sé cómo crear una tabla de base de datos personalizada en la versión magento 2.3.
Instalo el magento 2.3 y estoy creando un módulo personalizado.
Pero, no sé cómo crear una tabla de base de datos personalizada en la versión magento 2.3.
Respuestas:
En primer lugar, cree un db_schema.xml
archivo dentro /RH/Helloworld/etc
y escriba el siguiente código:
<?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>
= "Usar para crear y establecer el nombre de la tabla"<column> .. </column>
= "Usar para crear y establecer la columna de la tabla"<constraint> .. </constraint>
= "Usar para establecer restricciones como clave principal, clave externa, clave única, etc."Antes de ejecutar el comando de actualización, debe agregar su esquema al db_whitelist_schema.json
archivo ejecutando el siguiente comando:
php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld
Ahora, se db_whitelist_schema.json
crearán archivos en la /RH/Helloworld/etc
carpeta.
Ahora corre php bin/magento s:up
La tabla se creará dentro de la base de datos.
=> Si desea cambiar el nombre de una columna, debe establecer la siguiente línea en la db_schema.xml
columna correspondiente:
<column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>
aquí, name = "nombre de columna nueva" y onCreate = "migrateDataFrom ()" = "nombre de columna anterior"
=> Si desea soltar la tabla, puede eliminar todo el nodo de la tabla del archivo xml o puede establecer el atributo deshabilitado en verdadero como en la línea siguiente en su db_schema.xml
:
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
Para más detalles, puedes consultar aquí .
Espero que te sea útil.
Cree un archivo llamado db_schema.xml en la carpeta etc en cualquier módulo personalizado.
<?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>
Ahora cree db_whitelist_schema.json en la misma ruta
php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module
Después de eso, simplemente ejecute php bin / magento setup: upgrade . Para más información puedes consultar aquí . Avísame en caso de que necesites más explicaciones sobre esto.
Los módulos principales de Magento 2.3 utilizaron un enfoque de esquema declarativo en lugar del script de actualización de configuración. Este es un nuevo enfoque recomendado en Magento 2.3 y superior. Magento 2.3.x todavía funciona con InstallSchema, InstallData, etc.