TransactionBehavior
Добавлено: 2013.02.21, 22:06
TransactionBehavior - поведение, которое позволяет автоматически\вручную обернуть операции между событиями onBeforeSave и onAfterSave в транзакцию.
Использование:
Есть два способа использовать поведение:
1. Простой. Автоматическая транзакция
Подключите поведение к моделе
затем:
2.
Ручной, классический способ
Подключите поведение к моделе
and then:
Способы отличаются тем что в первом случае используется магическая обработка ошибок, во втором - стандартная(try{}catch).
Api:
beginTransaction() - окрывает транзакцию
rollback() - откатывает
commit() - коммитит
saveTransaction($validate=true,$attributes=null) - Сохраняет с стандартной try{}catch проверкой. Если что-то не так, то возвращает false
Ссылка - https://github.com/Ekstazi/transactionbehavior
Использование:
Есть два способа использовать поведение:
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