Datenbanktransaktionen sofort abschließen
Mit nur 2 Zeilen Code kannst du jede Datenbanktransaktion in TYPO3 sofort abschließen und alle Änderungen persistent speichern. Man spricht auch von commit.
Copy-and-paste Vorlagen
$persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class);
$persistenceManager->persistAll();
Erläuterungen
TYPO3 nutzt für stets Datenbanktransaktionen. Jeder Schreibprozess sei es über die Repository oder über die manuelle Speicherung über den Querybuilder werden nicht sofort in die Datenbank geschrieben. Die dauerhafte Speicherung, also die persistente Speicherung, wird erst nach Abschluss des Requests vorgenommen.
Das bedeutet, dass bei einem INSERT erst dann die UID final zugeordnet wird, wenn die Transaktion abgeschlossen ist. Das kann hinderlich sein und manchmal braucht man den Abschluss einer Transaktion innerhalb eines Algorithmus.
Für diese Fälle muss die Datenbanktransaktion abgeschlossen werden. Man spricht hier auch von commit database transactions oder auch persistieren.