Я работаю над контроллером, который обновит несколько таблиц. Я могу вызвать свою модель из моего контроллера, и внутри функции модели я могу начать и зафиксировать свой запрос, он может откатиться, если произойдет ошибка.
Вот мой образец:
Контроллер:
//update table when update button is clicked
if (!empty($this->data)) {
if ($this->Item->update($this->data)) {
$this->Item->create();
$this->redirect('/sample');
return;
} else {
$this->set('data', $this->data);
}
}
Модель:
function update($data)
{
$this->begin($this);
if(!parent::save($data)) {
$this->rollback($this);
return false;
}
$this->commit();
return true;
}
Теперь это работает нормально. Но мне нужно вызвать другую модель в моем контроллере, например, «$ this ->« ANOTHER MODEL HERE »-> update ()». Мне нужно сделать откат, если возникнет проблема с любой моделью транзакции. Я думаю о том, чтобы поместить коммит в мой контроллер после успешного вызова обеих моделей.
Примерно так:
CONTROLLER PHP:
BEGIN TRANSACTION
->CALLS MODEL1
IF(MODEL1 == ERROR){
ROLLBACK
}
->CALLS MODEL2
IF(MODEL2 == ERROR){
ROLLBACK
}
COMMIT WHEN NO PROBLEM IS ENCOUNTERED
Так можно ли выполнить коммит в контроллере? Я могу сделать это только в модели. Заранее спасибо!