انجام تراکنش ها در فریم ورک

سلام وقت بخیر

دوستان کسی میدونه من چطور میتونم یک تراکنش تو یه کنترلر شروع کنم مثل

$transaction=Yii::$app->db->beginTransaction($isolationlevel);

و تو یه مدل دیگه یا کنترلر دیگه

$transaction->commit();

یا

$transaction->rollBack();

بزنم

باتشکر

[size="4"][right]

اون آبجکتی که ساختین رو میتونید به عنوان پارامتر به یک مدل دیگه بفرستید.

من یک مثال با

try/catch

میزنم:

در مدل فعلی میتونید داشته باشید:

[/right][/size]


$transaction=Yii::$app->db->beginTransaction($isolationlevel);

try{

 $anotherModel = new AnotherModel();

 $anotherModel->doSomethingWithTransaction($transaction);

}catch(Exception $e){

 $transaction->rollback();

//show an error

}

[size="4"][right]

در مدل دیگه ای دارید[/right][/size]


class AnotherModel extends \yii\db\ActiveRecord

{

 public function doSomethingWithTransaction($transaction)

 {

  try{

   //try something

   $transaction->commit();

  }catch(Exception $e){

   //show an error or throw a new exception to make the parent catch it

   $transaction->rollback();

  }

}

[size="4"][right]نحوه مدیریت

try/catch

بستگی به نیاز شما داره ولی همونطور که میبینید میتونید به صورت تو در تو

transaction

را تا هر عمیقی بفرستید.[/right][/size]

خیلی ممنون کمک بزرگی کردین

سلام دوستان ممنون از کمکتون
برای تراکنش هایی مثل صورتحساب قبض گاز چی؟