سلام وقت بخیر
دوستان کسی میدونه من چطور میتونم یک تراکنش تو یه کنترلر شروع کنم مثل
$transaction=Yii::$app->db->beginTransaction($isolationlevel);
و تو یه مدل دیگه یا کنترلر دیگه
$transaction->commit();
یا
$transaction->rollBack();
بزنم
باتشکر
سلام وقت بخیر
دوستان کسی میدونه من چطور میتونم یک تراکنش تو یه کنترلر شروع کنم مثل
$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]
خیلی ممنون کمک بزرگی کردین