In the previous post, we configured Symfony to use Docker for Database, in this post we will talk about Database creation(table, column...) using Doctrine and Symfony.
We can create a database with a simple command :
symfony console doctrine:database:create
Doctrine is an ORM (Object Relational Mapper) : Each Table in Database (ex:employee) has a corresponding class in our App (known as Entity, ex : Employee.php) and each column of this table (ex:name) is related to a property of that class (ex:
To create the entity class, run :
symfony console make:entity
New file is created under src/Entity folder (I like to run after each command
git status to check what has been generated by Symfony and access to the file to see its content).
make:entity command can be used to create an new Entity or to update an existing one (add new property, a constraint...).
Now to create the table and its columns, we need to execute 2 commands, the 1st one is :
symfony console make:migration
This command compares the actual state of the database with all Entity classes, if an Entity is newly created or modified the command creates the query for that changes under migrations folder in order to make database matches entities.
To execute this query, we run the 2nd command :
symfony console doctrine:migrations:migrate
Symfony is smart enough :D to know if a query has already been executed : The migration system create a table in Database doctrine_migration_versions where it stores all migrations executed :
Thanks for reading and Have a nice day ;)