L'ORM Doctrine
Comprendre et utiliser Doctrine dans Symfony
Notions théoriques
Doctrine est une bibliothèque PHP qui fournit des fonctionnalités pour interagir avec les bases de données.
Doctrine est un ORM (Object-Relational Mapping), ce qui signifie qu'il nous permet de travailler avec les bases de données en utilisant des objets PHP.
Pour utiliser Doctrine, vous devez d'abord configurer votre connexion à la base de données. Cela se fait généralement dans le fichier .env.local
de votre projet, où vous pouvez définir la variable d'environnement DATABASE_URL
avec les informations de votre base de données.
Une fois que vous avez configuré votre base de données, vous pouvez commencer à définir des entités. Une entité est une classe PHP qui représente une table de votre base de données. Chaque propriété de l'entité représente une colonne de la table.
Exemple de mise en application
Commençons par configurer notre base de données.
-
Copiez le fichier
.env
en.env.local
-
Ouvrez le fichier
.env.local
et définissezDATABASE_URL
avec vos informations de base de données.Par exemple :
DATABASE_URL="mysql://user:password@localhost:3306/my_game"
Ensuite, nous allons définir une entité Player
pour représenter les joueurs de notre jeu avec les propriétés id
et name
.
Pour cela, créez un nouveau fichier src/Entity/Player.php
et ajoutez le code suivant :
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class Player
{
#[ORM\Id, ORM\GeneratedValue, ORM\Column(type: "integer")]
private int $id;
#[ORM\Column(type: "string", length: 100)]
private string $name;
// getters and setters...
}
Dans cet exemple, nous avons défini une entité Player
avec deux propriétés : id
et name
. Chaque joueur aura un ID unique et un nom.
Il est conseillé de préciser le nom de la table dans l'entité, en utilisant par exemple les attributs PHP >= 8, sous la forme :
#[ORM\Table(name: 'nom_de_la_table')]
Par exemple, voici le la ligne à ajouter, pour que l'entity Player
utilise la table tbl_player
:
#[ORM\Entity]
#[ORM\Table(name: 'tbl_player')]
class Player
{
...
}
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Votre défi pour aujourd'hui consiste à créer votre première entité.
Créez une nouvelle entité Game
avec les propriétés id
et name
(comme dans l'exemple) qui utilisera la table tbl_game
.
Une solution
Vous devez être connecté pour voir le contenu.