Documentation · Chapitre 13

Suivre les changements et les valider en sécurité.

DbContext mémorise les entités chargées, compare leurs instantanés et valide toute l’unité de travail atomiquement. Les transactions imbriquées utilisent des savepoints lorsque le pilote le permet.

Chaque leçon part du problème, explique le mécanisme puis propose une vérification concrète.

Les instantanés révèlent les vrais changements

Lors du chargement, le contexte conserve un instantané. Modifier une propriété ordinaire suffit; pendingChanges indique ensuite les insertions, modifications et suppressions prévues.

phpaml — zsh
$user = $context->set(User::class)->find(42);
$user->name = 'Ada';

$context->transaction(function () use ($context): void {
    $context->saveChanges();
});

saveChanges forme une unité de travail

saveChanges enveloppe toutes les mutations en attente dans une transaction. Toute l’opération métier réussit ou aucune partie n’est validée; un échec reste disponible pour diagnostic ou nouvel essai.

Transactions et savepoints protègent la cohérence

transaction() définit une frontière explicite. Une transaction ouverte dans une autre utilise un savepoint si possible, afin d’annuler l’étape interne sans corrompre l’opération externe.