====== Symfony et les Databases ======
===== Sources à jour =====
* [[https://symfony.com/doc/current/doctrine.html]]
===== Prérequis =====
Il faut que l'ORM soit installé, sinon ->''symfony composer req orm''
Si on utilise MySQL, il faut que l'extension pdo_mysql soit activée dans PHP, sinon erreur : ''In PDOConnection.php : could not find driver''
===== Configurer un projet =====
dans le fichier ''.env'' modifier la valeur ''DATABASE_URL''
On peut aussi mettre la configuration dans le fichier ''.env.local''.\\
Fichier qui ne sera pas commité par GIT
DATABASE_URL=mysql://User:Password@192.168.1.103:3306/Database_Name
J'ai eu une erreur **<>** qui était dû a une mauvaise forme de l'Url, peut être un espace a la fin ou autre ???
===== Base de donnée =====
==== Si la base de données est déjà existante ====
On teste si on a accès a la base de donnée en exécutant une petite requête SQL
''symfony console doctrine:query:sql "SHOW TABLES"'' par exemple...
>symfony console doctrine:query:sql "SHOW TABLES"
[OK] 0 rows affected.
Si on a pas d'erreur c'est que tout fonctionne bien !
==== Création de la base de donnée ====
Création de la base de donnée avec '' console doctrine:database:create''
D:\webprojects\test-api-project>php bin/console doctrine:database:create
Created database `test_api_project` for connection named default
Vérification avec un client MySQL (comme [[prog:outils:outils|HeidiSQL]])
{{:prog:symfony:hsql.png|}}
==== Supprimer la base de données ====
Supprimer la base de donnée liée au projet avec la commande ''console doctrine:database:drop --force''
''--force'' est obligatoire sinon il demande de rajouter ce drapeau, pour être sure que vous soyez sure de vouloir supprimer la base de données et son contenu !
D:\webprojects\test-api-project\bin>php console doctrine:database:drop --force
Dropped database `test_api_project` for connection named default
===== Tables =====
==== Mettre à jour (ALTER) les tables suite à la modification d'une Entity sans perte de données ====
Grâce à la commande ''console doctrine:schema:update''.
2 options :
On peut vérifier ce qui va etre fait avec l'option ''--dump-sql''
D:\webprojects>symfony console doctrine:schema:update --dump-sql
The following SQL statements will be executed:
ALTER TABLE article ADD short_description LONGTEXT DEFAULT NULL;
On peut exécuter l’opération avec l'option ''--force''
D:\webprojects>symfony console doctrine:schema:update --force
Updating database schema...
1 query was executed