Documentation · Chapitre 07

Donner aux livres
une forme typée.

Une entité décrit en PHP les valeurs qui composent un enregistrement et la table à laquelle il appartient.

Nous remplaçons le stockage temporaire de reading-list par SQLite, sans changer l’objectif de l’application.

Générez puis complétez Book

phpaml — zsh
aml make:entity Book

src/models/Book.php

phpaml — zsh
<?php

declare(strict_types=1);

namespace App\Models;

use AML\Data\Entity;
use AML\Data\Metadata\{Key, Table};

#[Table('books')]
final class Book extends Entity
{
    #[Key]
    public int $id;
    public string $title;
    public string $author;
}

Lisez chaque élément

#[Table('books')]associe la classe à la table books
extends Entityrend la classe persistable par Data
#[Key]désigne la clé primaire
public string $titledécrit une valeur texte obligatoire

Pourquoi l’identifiant n’a pas de valeur ?

Avant l’insertion, le livre n’existe pas encore dans la table. La base génère sa clé; DbSet::add() la remet ensuite dans $book->id. Le même objet PHP connaît alors son identité persistée.

Une entité n’est pas une table

La classe décrit la forme côté PHP. La migration crée réellement la structure côté base. Les deux doivent rester cohérents.