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();
  }