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>
= "기본 키, 외래 키, 고유 키 등의 제약 조건 설정에 사용"upgrade 명령을 실행하기 전에 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 파일에서 전체 테이블 노드를 제거하거나 다음에서 아래 행과 같이 disabled 속성을 true로 설정할 수 있습니다 db_schema.xml
.
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
희망, 그것은 당신에게 도움이 될 것입니다.
사용자 정의 모듈의 etc 폴더에 db_schema.xml 이라는 파일을 작성하십시오 .
<?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를 실행하십시오 . 자세한 내용은 여기 를 확인하십시오 . 이에 대한 추가 설명이 필요한 경우 알려주세요.