Использование:
Есть два способа использовать поведение:
1. Простой. Автоматическая транзакция
Подключите поведение к моделе
Код: Выделить всё
public function behaviors()
{
return array(
'transaction'=>array(
'class'=>'ext.transaction.TransactionBehavior',
'autoStart'=>true
)
);
}
public function beforeSave()
{
parent::beforeSave();
// операции с бд перед сохранением модели
return true;
}
public function afterSave()
{
// операции с бд после сохранения модели
parent::afterSave();
}
Код: Выделить всё
$model->save();
Ручной, классический способ
Подключите поведение к моделе
Код: Выделить всё
public function behaviors()
{
return array(
'transaction'=>array(
'class'=>'ext.transaction.TransactionBehavior',
)
);
}
public function beforeSave()
{
parent::beforeSave();
// операции с бд перед сохранением модели
return true;
}
public function afterSave()
{
// операции с бд после сохранения модели
parent::afterSave();
}
Код: Выделить всё
$model->saveTransactional();
Api:
beginTransaction() - окрывает транзакцию
rollback() - откатывает
commit() - коммитит
saveTransaction($validate=true,$attributes=null) - Сохраняет с стандартной try{}catch проверкой. Если что-то не так, то возвращает false
Ссылка - https://github.com/Ekstazi/transactionbehavior