ORM
- ORM
- Object-relational mapping
- En bon français : Mapping objet relationnel
- Correspondances entre la base de données et les objets afin de créer l'illusion d'une base de données orientée objet
On n'utilisera donc pas de requêtes SQL mais bien les méthodes des objets.
Mise en oeuvre
Symfony utilise les annotations PHP pour la définition du mapping
// src/Entity/Profile.php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="App\Repository\ProfileRepository") */ class Profile { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=255) */ private $battleTag; /** * @ORM\Column(type="string", length=255, nullable=true) */ private $guildName; /** * @ORM\Column(type="integer") */ private $parangonLevel; /** * @ORM\Column(type="datetime") */ private $date; public function getId(): ?int { return $this->id; } public function getBattleTag(): ?string { return $this->battleTag; } public function setBattleTag(string $battleTag): self { $this->battleTag = $battleTag; return $this; } public function getGuildName(): ?string { return $this->guildName; } public function setGuildName(?string $guildName): self { $this->guildName = $guildName; return $this; } public function getParangonLevel(): ?int { return $this->parangonLevel; } public function setParangonLevel(int $parangonLevel): self { $this->parangonLevel = $parangonLevel; return $this; } public function getDate(): ?\DateTimeInterface { return $this->date; } public function setDate(\DateTimeInterface $date): self { $this->date = $date; return $this; } }
Symfony fournit un outil pour la génération des entités :
$ ./bin/console make:entity
Les initialisations sont faites dans le constructeur.
public function __construct() { $this->date = new \Datetime(); }