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
.enven.env.local -
Ouvrez le fichier
.env.localet définissezDATABASE_URLavec 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.