@alekskondr
php, javascript, yii2, drupal, MQL

Как сделать транзакции в Yii2?

Привет всем.
Хочу сделать транзакции в Yii2

Нашел такой пример
private function applyOperation($model)
{
            //изменяем баланс контрагента
            $contragent= Contragents::find( $model->contragent );   
            $contragent->balance = $contragent->balance + $model->prihod;
            $contragent->balance = $contragent->balance - $model->rashod;            
            
            //запомним в операции текущий баланс контрагента
            $model->balance=$contragent->balance;            

            //сохраним и модель операции и модель контрагента
            $transaction = Yii::$app->db->beginTransaction();
if ($contragent->save() && $model->save()) {
    // если сохранение прошло без ошибок, то коммитим транзакцию
    $transaction->commit();
    return true;
} else {
    // если хоть одно из сохранений не удалось, то откатываемся
    $transaction->rollback();
    return false;
}
}


Экшн
if ($model->load($_POST) && $this->applyOperation($model) ) {
    //return $this->redirect(  куда то там )
}


Подскажите как форму вьюхи написать?
Не могу никак понять там одна переменная $contragent, а мне ж надо у одного юзера забрать с баланса,
другому добавить.
  • Вопрос задан
  • 1361 просмотр
Пригласить эксперта
Ответы на вопрос 1
restyler
@restyler
В примере один из юзеров прописан в relation ($user->contragent - стало быть надо смотреть метод Contragent::getContragent()) - это значит что подразумевается, что он уже в базе есть, или (что вероятнее) он подгружается из $_POST (т.е. в форме во вьюхе есть поле user[contragent_id] которое заполняется пользователем в браузере)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы