Tôi cài đặt magento 2.3 và tôi đang tạo mô-đun tùy chỉnh.
Nhưng, tôi không biết cách tạo bảng cơ sở dữ liệu tùy chỉnh trong phiên bản magento 2.3.
Tôi cài đặt magento 2.3 và tôi đang tạo mô-đun tùy chỉnh.
Nhưng, tôi không biết cách tạo bảng cơ sở dữ liệu tùy chỉnh trong phiên bản magento 2.3.
Câu trả lời:
Trước hết, tạo db_schema.xml
tập tin bên trong /RH/Helloworld/etc
và viết mã sau đây:
<?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>
= "Sử dụng để tạo và đặt tên bảng"<column> .. </column>
= "Sử dụng để tạo và đặt cột của bảng"<constraint> .. </constraint>
= "Sử dụng để đặt ràng buộc như khóa chính, khóa ngoại, khóa duy nhất, v.v."Trước khi chạy lệnh nâng cấp, bạn cần thêm lược đồ của mình vào db_whitelist_schema.json
tệp bằng cách chạy lệnh sau:
php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld
Bây giờ, có db_whitelist_schema.json
tập tin sẽ được tạo trong /RH/Helloworld/etc
thư mục.
Bây giờ, chạy php bin/magento s:up
Bảng sẽ được tạo bên trong cơ sở dữ liệu.
=> Nếu bạn muốn đổi tên một cột, bạn cần đặt dòng bên dưới trong db_schema.xml
cột thích hợp của mình :
<column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>
ở đây, name = "tên cột mới" và onCreate = "MigrateDataFrom ()" = "tên cột cũ"
=> Nếu bạn muốn bỏ bảng, thì bạn có thể xóa toàn bộ nút bảng khỏi tệp xml hoặc bạn có thể đặt thuộc tính bị vô hiệu thành đúng như dòng dưới đây trong db_schema.xml
:
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
Để biết thêm chi tiết, bạn có thể kiểm tra ở đây .
Hy vọng, nó sẽ hữu ích cho bạn.
Tạo tệp có tên là db_schema.xml trong thư mục vv trong bất kỳ mô-đun tùy chỉnh nào của bạn.
<?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>
Bây giờ hãy tạo db_whitelist_schema.json tại cùng một đường dẫn
php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module
Sau đó, chỉ cần chạy php bin / magento setup: nâng cấp . Để biết thêm thông tin bạn có thể kiểm tra ở đây . Hãy cho tôi biết trong trường hợp bạn cần giải thích thêm về điều này.
Ghé thăm blog này. Hướng dẫn đầy đủ để thực hiện Lược đồ khai báo trong Magento 2.3
https://stagebit.com/magento-2/declarative-schema-magento-2-3/
Các mô-đun lõi Magento 2.3 đã sử dụng một cách tiếp cận lược đồ khai báo thay vì tập lệnh nâng cấp thiết lập. Đây là một cách tiếp cận mới được đề xuất trong Magento 2.3 trở lên. Magento 2.3.x vẫn hoạt động với InstallSchema, InstallData, .. vv