Magento 2.3'ü yükledim ve özel modül oluşturuyorum.
Ancak, magento 2.3 sürümünde özel veritabanı tablosu oluşturmayı bilmiyorum.
Magento 2.3'ü yükledim ve özel modül oluşturuyorum.
Ancak, magento 2.3 sürümünde özel veritabanı tablosu oluşturmayı bilmiyorum.
Yanıtlar:
Her şeyden önce, db_schema.xml
içinde dosya oluşturun /RH/Helloworld/etc
ve aşağıdaki kodu yazın:
<?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>
= "Tablo adı oluşturmak ve ayarlamak için kullan"<column> .. </column>
= "Tablonun oluşturma ve ayarlama sütunu için kullan"<constraint> .. </constraint>
= "Birincil anahtar, yabancı anahtar, benzersiz anahtar vb. Gibi ayar kısıtlaması için kullanın."Yükseltme komutunu çalıştırmadan önce db_whitelist_schema.json
, aşağıdaki komutu çalıştırarak şemanızı dosyaya eklemeniz gerekir :
php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld
Şimdi klasörde db_whitelist_schema.json
dosya oluşturulacak /RH/Helloworld/etc
.
Şimdi koş php bin/magento s:up
Tablo veritabanı içinde oluşturulacaktır.
=> Bir sütunu yeniden adlandırmak istiyorsanız db_schema.xml
, uygun sütunundaki aşağıdaki satırı ayarlamanız gerekir :
<column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>
burada, name = "yeni sütun adı" ve onCreate = "migrateDataFrom ()" = "eski sütun adı"
=> Tabloyu bırakmak istiyorsanız, xml dosyasından tüm tablo düğümünü kaldırabilir veya devre dışı bırakılmış özniteliği aşağıdaki satırdaki gibi true olarak ayarlayabilirsiniz db_schema.xml
:
<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>
Daha fazla ayrıntı için, buradan kontrol edebilirsiniz .
Umut, sizin için yararlı olacaktır.
Herhangi bir özel modülünüzdeki etc klasörü altında db_schema.xml adlı bir dosya oluşturun .
<?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>
Şimdi aynı yolda db_whitelist_schema.json oluşturun
php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module
Bundan sonra sadece php bin / magento kurulumunu çalıştırın : yükseltme . Daha fazla bilgi için Buradan kontrol edebilirsiniz . Bu konuda daha fazla açıklamaya ihtiyacınız olması durumunda bana bildirin.
Magento 2.3 çekirdek modülleri, kurulum yükseltme komut dosyası yerine bildirici bir şema yaklaşımı kullandı. Bu Magento 2.3 ve üstü için önerilen yeni bir yaklaşımdır. Magento 2.3.x hala InstallSchema, InstallData, .. vb. İle çalışıyor.