Für einen Wizard der eine Reihe von Einträgen aus einer CSV Datei in die Datenbank importiert wollte ich die INSERT-Statements in einer Transaktion vereinen. An verschiedenen Stellen (z.B. hier) liest man, das würde mit
$this->Model->transactional = true; $this->Model->begin(); ... $this->Model->commit();
funktionieren. Ich hab alles versucht, aber so lies sich das nicht zum laufen bringen.
Den entscheidenden Hinweis hab ich dann im CakePHP Bugtracker gefunden. Mit
$this->Model->getDataSource()->begin($this->Model);
wird jetzt endlich eine Transaktion gestartet. Den Parameter transactional ignoriert CakePHP dabei allerdings, es funktioniert mit und ohne.