Adding TIMESTAMP_INIT as a Default Value in Declarative Schema


 Introduction:

When working with databases, it's often essential to track the timestamp of various operations such as record creation or modification. Magento 2, a popular e-commerce platform, introduced the Declarative Schema approach to simplify database setup and maintenance. In this article, we will explore how to add the TIMESTAMP_INIT value as a default value using the Declarative Schema in Magento 2.

Understanding Declarative Schema: Declarative Schema is a powerful feature in Magento 2 that allows developers to define and manage database structures using XML files. It provides a structured way of creating and updating database tables, columns, indexes, and other elements. The schema is defined in a declarative manner, which means developers specify what the database should look like, and Magento handles the necessary database operations automatically.

Adding TIMESTAMP_INIT as a Default Value: To add TIMESTAMP_INIT as a default value in the Declarative Schema, follow these steps:

Step 1: Create a new file or modify an existing one: In your Magento module, navigate to the etc/db_schema.xml file or create one if it doesn't exist.

Step 2: Define the table structure: Inside the <schema> tag, define your table structure using the <table> tag. For example, let's say we have a table called example_table with a column named created_at that we want to set with the TIMESTAMP_INIT value.

Step 3: Add the column declaration: Within the <table> tag, add a <column> tag for the created_at column. Specify the column name, type, and length as per your requirements.

xml
<column xsi:type="timestamp" name="created_at" on_update="false" nullable="false" comment="Created At"/>

Here, on_update="false" ensures that the created_at column won't update automatically when the record is modified.

Step 4: Set the default value: To set TIMESTAMP_INIT as the default value, include the default="TIMESTAMP_INIT" attribute in the <column> tag.

xml
<column xsi:type="timestamp" name="created_at" on_update="false" nullable="false" default="TIMESTAMP_INIT" comment="Created At"/>

Step 5: Complete the db_schema.xml file: Save the db_schema.xml file with the complete table and column definitions.

Step 6: Run the database upgrade: To apply the changes, run the following command from the Magento root directory:

arduino
bin/magento setup:upgrade

This command triggers the installation and upgrade process, which executes the Declarative Schema changes.

Conclusion: By following the steps outlined in this article, you can easily add the TIMESTAMP_INIT value as a default value in the Declarative Schema of your Magento 2 module. Leveraging Declarative Schema simplifies the management of database structures and ensures consistent database operations across different environments.

How to check if Magento is running in production mode or developer mode

If you want to know. your Magento 2 website is running on which environment you can run below command on terminal and very easily you can kn...

Popular Posts

Posts