Les bases de données et l’ORM Doctrine avec Symfony 6

Symfony fournit tous les outils dont vous avez besoin pour utiliser des bases de données dans vos applications grâce à Doctrine, le meilleur ensemble de bibliothèques PHP pour travailler avec des bases de données. Ces outils prennent en charge les bases de données relationnelles comme MySQL et PostgreSQL, ainsi que les bases de données NoSQL comme MongoDB.

Les bases de données sont un sujet vaste, c’est pourquoi la documentation est divisée en trois articles :

Cet article explique la manière recommandée de travailler avec des bases de données relationnelles dans les applications Symfony ;
Lisez cet autre article si vous avez besoin d’un accès de bas niveau pour effectuer des requêtes SQL brutes vers des bases de données relationnelles (similaire au PDO de PHP) ;
Lisez la documentation de DoctrineMongoDBBundle si vous travaillez avec des bases de données MongoDB.
Installation de Doctrine

Tout d’abord, installez le support Doctrine via le pack orm Symfony, ainsi que le MakerBundle, qui vous aidera à générer du code :

Configuration de la base de données

Les informations de connexion à la base de données sont stockées dans une variable d’environnement appelée DATABASE_URL. Pour le développement, vous pouvez trouver et personnaliser cette variable dans le fichier .env :

Maintenant que vos paramètres de connexion sont configurés, Doctrine peut créer la base de données db_name pour vous :
php bin/console doctrine:database:create

Il y a plus d’options dans config/packages/doctrine.yaml que vous pouvez configurer, y compris votre server_version (par exemple 5.7 si vous utilisez MySQL 5.7), ce qui peut affecter le fonctionnement de Doctrine.

Création d’une classe d’entité

Supposons que vous construisiez une application où des produits doivent être affichés. Sans même penser à Doctrine ou aux bases de données, vous savez déjà que vous avez besoin d’un objet Product pour représenter ces produits.

Vous pouvez utiliser la commande make:entity pour créer cette classe et tous les champs dont vous avez besoin. La commande vous posera quelques questions – répondez-y comme indiqué ci-dessous :

 php bin/console make:entity

Class name of the entity to create or update:
> Product

New property name (press <return> to stop adding fields):
> name

Field type (enter ? to see all types) [string]:
> string

Field length [255]:
> 255

Can this field be null in the database (nullable) (yes/no) [no]:
> no

New property name (press <return> to stop adding fields):
> price

Field type (enter ? to see all types) [string]:
> integer

Can this field be null in the database (nullable) (yes/no) [no]:
> no

New property name (press <return> to stop adding fields):
>
(press enter again to finish)