cakePHP - условное сохранение, это можно сделать? - PullRequest
0 голосов
/ 06 сентября 2011

Сценарий: Метод в контроллере, который сохраняет данные, использует несколько сложных вычислений по результатам первого вызова Model->save(). Затем результат сохраняется в связанной модели. иногда это не удается ..

Есть ли встроенный способ сделать это с тортом, который удалит первую запись, если второе сохранение не удалось?

1 Ответ

4 голосов
/ 06 сентября 2011

Если вы абсолютно не можете выполнить эти вычисления в приложении без предварительного сохранения в базе данных, используйте Транзакции :

$dbo = $this->Model->getDataSource();
$dbo->begin($this->Model);

$this->Model->save(...);

/* here be dragons */

if (/* success */) {
    $dbo->commit($this->Model);
} else {
    $dbo->rollback($this->Model);
}

Для этого необходимо использовать базу данных и механизм хранения , поддерживающий транзакции, например InnoDB MySQL .

...