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.
$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.