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