Magento 2.3 : How to implement declarative schema in custom module





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty{ margin-bottom:0;
}






up vote
3
down vote

favorite












I install the magento 2.3 and I'm creating custom module.



But, I don't know how to create custom database in magento 2.3 version.



Anyone please help me.



Thanks in advance.










share|improve this question









New contributor




harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • database Or custom table in Magento database?
    – Pawan
    2 hours ago

















up vote
3
down vote

favorite












I install the magento 2.3 and I'm creating custom module.



But, I don't know how to create custom database in magento 2.3 version.



Anyone please help me.



Thanks in advance.










share|improve this question









New contributor




harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • database Or custom table in Magento database?
    – Pawan
    2 hours ago













up vote
3
down vote

favorite









up vote
3
down vote

favorite











I install the magento 2.3 and I'm creating custom module.



But, I don't know how to create custom database in magento 2.3 version.



Anyone please help me.



Thanks in advance.










share|improve this question









New contributor




harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I install the magento 2.3 and I'm creating custom module.



But, I don't know how to create custom database in magento 2.3 version.



Anyone please help me.



Thanks in advance.







magento2.3 database-schema






share|improve this question









New contributor




harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 2 hours ago









Rohan Hapani

5,14521559




5,14521559






New contributor




harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 hours ago









harsh khandhar

161




161




New contributor




harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






harsh khandhar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • database Or custom table in Magento database?
    – Pawan
    2 hours ago


















  • database Or custom table in Magento database?
    – Pawan
    2 hours ago
















database Or custom table in Magento database?
– Pawan
2 hours ago




database Or custom table in Magento database?
– Pawan
2 hours ago










2 Answers
2






active

oldest

votes

















up vote
2
down vote













First of all, create db_schema.xml file inside /RH/Helloworld/etc and write the following code :



<?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" name="PRIMARY">
<column name="id"/>
</constraint>
</table>
</schema>




  • <table> .. </table> = "Use for create and set table name"


  • <column> .. </column> = "Use for create and set column of the table"


  • <constraint> .. </constraint> = "Use for set constraint as like
    primary key, foreign key, unique key etc."


Before running the upgrade command you need to add your schema to db_whitelist_schema.json file by running the following command :



php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld


Now, there are db_whitelist_schema.json file will be create in /RH/Helloworld/etc folder.



Now, run php bin/magento s:up



Table will be create inside database.



=> If you want to renaming a column, you need to set below line in your db_schema.xml at appropriate column :



<column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>


here, name = "new column name" and onCreate="migrateDataFrom()" = "old column name"



=> If you want to drop table, then you can either remove entire table node from xml file or you can set disabled attribute to true as like below line in your db_schema.xml :



<table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
..
</table>


Hope, It will helpful for you.






share|improve this answer





















  • Good one @Rohan
    – Ramkishan Suthar
    1 hour ago


















up vote
1
down vote













Create file named as db_schema.xml under etc folder in your any custom module.



<?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>


Now create db_whitelist_schema.json at same path



php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module


After that just run php bin/magento setup:upgrade. For more information you can check Here . Let me know in case you need more explanation on this.






share|improve this answer





















    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "479"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });






    harsh khandhar is a new contributor. Be nice, and check out our Code of Conduct.










    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f251884%2fmagento-2-3-how-to-implement-declarative-schema-in-custom-module%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    2
    down vote













    First of all, create db_schema.xml file inside /RH/Helloworld/etc and write the following code :



    <?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" name="PRIMARY">
    <column name="id"/>
    </constraint>
    </table>
    </schema>




    • <table> .. </table> = "Use for create and set table name"


    • <column> .. </column> = "Use for create and set column of the table"


    • <constraint> .. </constraint> = "Use for set constraint as like
      primary key, foreign key, unique key etc."


    Before running the upgrade command you need to add your schema to db_whitelist_schema.json file by running the following command :



    php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld


    Now, there are db_whitelist_schema.json file will be create in /RH/Helloworld/etc folder.



    Now, run php bin/magento s:up



    Table will be create inside database.



    => If you want to renaming a column, you need to set below line in your db_schema.xml at appropriate column :



    <column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>


    here, name = "new column name" and onCreate="migrateDataFrom()" = "old column name"



    => If you want to drop table, then you can either remove entire table node from xml file or you can set disabled attribute to true as like below line in your db_schema.xml :



    <table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
    ..
    </table>


    Hope, It will helpful for you.






    share|improve this answer





















    • Good one @Rohan
      – Ramkishan Suthar
      1 hour ago















    up vote
    2
    down vote













    First of all, create db_schema.xml file inside /RH/Helloworld/etc and write the following code :



    <?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" name="PRIMARY">
    <column name="id"/>
    </constraint>
    </table>
    </schema>




    • <table> .. </table> = "Use for create and set table name"


    • <column> .. </column> = "Use for create and set column of the table"


    • <constraint> .. </constraint> = "Use for set constraint as like
      primary key, foreign key, unique key etc."


    Before running the upgrade command you need to add your schema to db_whitelist_schema.json file by running the following command :



    php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld


    Now, there are db_whitelist_schema.json file will be create in /RH/Helloworld/etc folder.



    Now, run php bin/magento s:up



    Table will be create inside database.



    => If you want to renaming a column, you need to set below line in your db_schema.xml at appropriate column :



    <column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>


    here, name = "new column name" and onCreate="migrateDataFrom()" = "old column name"



    => If you want to drop table, then you can either remove entire table node from xml file or you can set disabled attribute to true as like below line in your db_schema.xml :



    <table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
    ..
    </table>


    Hope, It will helpful for you.






    share|improve this answer





















    • Good one @Rohan
      – Ramkishan Suthar
      1 hour ago













    up vote
    2
    down vote










    up vote
    2
    down vote









    First of all, create db_schema.xml file inside /RH/Helloworld/etc and write the following code :



    <?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" name="PRIMARY">
    <column name="id"/>
    </constraint>
    </table>
    </schema>




    • <table> .. </table> = "Use for create and set table name"


    • <column> .. </column> = "Use for create and set column of the table"


    • <constraint> .. </constraint> = "Use for set constraint as like
      primary key, foreign key, unique key etc."


    Before running the upgrade command you need to add your schema to db_whitelist_schema.json file by running the following command :



    php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld


    Now, there are db_whitelist_schema.json file will be create in /RH/Helloworld/etc folder.



    Now, run php bin/magento s:up



    Table will be create inside database.



    => If you want to renaming a column, you need to set below line in your db_schema.xml at appropriate column :



    <column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>


    here, name = "new column name" and onCreate="migrateDataFrom()" = "old column name"



    => If you want to drop table, then you can either remove entire table node from xml file or you can set disabled attribute to true as like below line in your db_schema.xml :



    <table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
    ..
    </table>


    Hope, It will helpful for you.






    share|improve this answer












    First of all, create db_schema.xml file inside /RH/Helloworld/etc and write the following code :



    <?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" name="PRIMARY">
    <column name="id"/>
    </constraint>
    </table>
    </schema>




    • <table> .. </table> = "Use for create and set table name"


    • <column> .. </column> = "Use for create and set column of the table"


    • <constraint> .. </constraint> = "Use for set constraint as like
      primary key, foreign key, unique key etc."


    Before running the upgrade command you need to add your schema to db_whitelist_schema.json file by running the following command :



    php bin/magento setup:db-declaration:generate-whitelist --module-name=RH_Helloworld


    Now, there are db_whitelist_schema.json file will be create in /RH/Helloworld/etc folder.



    Now, run php bin/magento s:up



    Table will be create inside database.



    => If you want to renaming a column, you need to set below line in your db_schema.xml at appropriate column :



    <column xsi:type="varchar" name="customer_email" onCreate="migrateDataFrom(email)" on_update="false" nullable="false" default="" comment="Customer Email"/>


    here, name = "new column name" and onCreate="migrateDataFrom()" = "old column name"



    => If you want to drop table, then you can either remove entire table node from xml file or you can set disabled attribute to true as like below line in your db_schema.xml :



    <table name="rh_helloworld" resource="default" engine="innodb" comment="RH Helloworld" disabled="true">
    ..
    </table>


    Hope, It will helpful for you.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered 1 hour ago









    Rohan Hapani

    5,14521559




    5,14521559












    • Good one @Rohan
      – Ramkishan Suthar
      1 hour ago


















    • Good one @Rohan
      – Ramkishan Suthar
      1 hour ago
















    Good one @Rohan
    – Ramkishan Suthar
    1 hour ago




    Good one @Rohan
    – Ramkishan Suthar
    1 hour ago












    up vote
    1
    down vote













    Create file named as db_schema.xml under etc folder in your any custom module.



    <?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>


    Now create db_whitelist_schema.json at same path



    php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module


    After that just run php bin/magento setup:upgrade. For more information you can check Here . Let me know in case you need more explanation on this.






    share|improve this answer

























      up vote
      1
      down vote













      Create file named as db_schema.xml under etc folder in your any custom module.



      <?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>


      Now create db_whitelist_schema.json at same path



      php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module


      After that just run php bin/magento setup:upgrade. For more information you can check Here . Let me know in case you need more explanation on this.






      share|improve this answer























        up vote
        1
        down vote










        up vote
        1
        down vote









        Create file named as db_schema.xml under etc folder in your any custom module.



        <?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>


        Now create db_whitelist_schema.json at same path



        php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module


        After that just run php bin/magento setup:upgrade. For more information you can check Here . Let me know in case you need more explanation on this.






        share|improve this answer












        Create file named as db_schema.xml under etc folder in your any custom module.



        <?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>


        Now create db_whitelist_schema.json at same path



        php bin/magento setup:db-declaration:generate-whitelist --module-name=Vendor_Module


        After that just run php bin/magento setup:upgrade. For more information you can check Here . Let me know in case you need more explanation on this.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 2 hours ago









        Ramkishan Suthar

        1,8941932




        1,8941932






















            harsh khandhar is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            harsh khandhar is a new contributor. Be nice, and check out our Code of Conduct.













            harsh khandhar is a new contributor. Be nice, and check out our Code of Conduct.












            harsh khandhar is a new contributor. Be nice, and check out our Code of Conduct.
















            Thanks for contributing an answer to Magento Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f251884%2fmagento-2-3-how-to-implement-declarative-schema-in-custom-module%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            What visual should I use to simply compare current year value vs last year in Power BI desktop

            Alexandru Averescu

            Trompette piccolo