Встановлюю 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"/>
тут, name = "нова назва стовпця" та onCreate = "migrateDataFrom ()" = "стара назва стовпця"
=> Якщо ви хочете скинути таблицю, ви можете видалити весь вузол таблиці з файлу xml або ви можете встановити відключений атрибут на true як у нижньому рядку у вашому db_schema.xml
:
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
Більш детальну інформацію ви можете перевірити тут .
Сподіваюся, це вам допоможе.
Створіть файл із іменем db_schema.xml у папці etc у будь-якому власному модулі.
<?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 setup: upgrade . Для отримання додаткової інформації Ви можете перевірити тут . Повідомте мене у випадку, якщо вам знадобиться більше пояснень з цього приводу.
Основні модулі Magento 2.3 використовували декларативний підхід до схеми замість сценарію оновлення настройки. Це новий рекомендований підхід у Magento 2.3 і вище. Magento 2.3.x все ще працює з InstallSchema, InstallData, .. і т.д.