Création d'entité
Créons la première entité correspondant aux évènements, avec la commande interactive make:entity
:
php bin/console make:entity
On indique d'abord le nom de la classe: Event
.
[output] Class name of the entity to create or update (e.g. OrangeKangaroo):
> Event
Les fichiers des classes d'entité et de repository sont alors créés et on peut commencer à ajouter les propriétés:
[output] created: src/Entity/Event.php
[output] created: src/Repository/EventRepository.php
[output]
[output] Entity generated! Now let's add some fields!
[output] You can always add more fields later manually or by re-running this command.
[output]
[output] New property name (press <return> to stop adding fields):
>
En laissant vide, la commande s'arrêtera. Dans ce cas pas de panique, relancez-la en indiquant le nom de l'entité existante et celle-ci sera modifiée.
Pour chaque propriété ajoutée il faudra généralement indiquer:
- son nom
- son type
- sa taille (si le type choisi le permet)
- si elle est nullable
Ajoutez les propriétés suivantes:
Description | Nom | Type | Taille | Nullable |
---|---|---|---|---|
Le nom de l'événement | title |
string |
255 | ❌ |
Une description facultative | description |
text |
✅ | |
La date et heure de début | startAt |
datetime |
❌ | |
La date et heure de fin | endAt |
datetime |
❌ |
Structure d'une entité
Ouvrez le fichier de l'entité /src/Entity/Event.php. La configuration est gérée par des attributs de Doctrine\ORM\Mapping
.
L'attribut Entity
indique à Doctrine que cette classe est une entité dont le repository correspondant est EventRepository
:
#[ORM\Entity(repositoryClass: EventRepository::class)]
class Event
L'identifiant a déjà été généré par la commande make:entity
et comporte 3 attributs indiquant qu'il s'agit de la clé primaire, que sa valeur est générée automatiquement et qu'il s'agit bien d'une colonne en base:
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
Les autres propriétés ont seulement l'attribut Column
reprennant les spécificités indiquées précédemment:
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $description = null;
Mais pour l'instant, il n'y a aucune table correspondante en base de données.