การทำ Transaction ใน Yii Framework 2

คู่มือการเรียนรู้ Yii Framework 2 (Yii2)

บทเรียนดีๆ สำหรับผู้ที่ต้องการแบ่งปัน บทเรียนของคุณอาจมีค่าสำหรับอีกหลายๆ คน

beta version

การทำ Transaction ใน Yii Framework 2

มานพ กองอุ่น yii transaction 2,068

ทำไมต้องทำ Transaction?

เรื่องของ Transaction นั้นเป็นเรื่องที่มีมาค่อนข้างนานพอสมควร ข้อดีของการทำ Transaction คือ ในกรณีที่มีการทำงานกับคำสั่งในการประมวลผลฐานข้อมูลหลายๆ คำสั่ง ซึ่งอาจมีบางคำสั่งที่ไม่สามารถทำงานได้ หากเราเขียนโปรแกรมแบบเดิมก็จะมีการกระทำการกับคำสั่งมาเรื่อยๆ จนเกิด error ในคำสั่งที่ไม่สามารถทำงานได้ ตายละ เมื่อเกิด error แล้วตัวที่เราได้ทำไปแล้วจะย้อนกลับได้ หากต้องการย้อนกลับก็ต้องเขียนโปรแกรมตรวจสอบกันวุ่นวายเลยทีเดียว

ทางแก้ไขของเหตุการณ์เช่นนี้คือการทำ Transaction เพื่อตรวจสอบว่าคำสั่งทุกคำสั่งจะถูกทำงานได้อย่างปลอดภัย หากมีคำสั่งไหนที่ไม่สามารถทำงานได้หรือเกิด error บางอย่าง ก็จะ rollBack() กลับไปยังจุดเริ่มต้น ทำให้ระบบมีความปลอดภัย และมีความถูกต้องของข้อมูลมากยิ่งขึ้น

รูปแบบใน Yii Framework 2

คำสั่งของ Transaction ใน Yii Framework 2 นั้นสามารถทำได้อย่างง่ายดาย โดยมี try{}catch(){} เข้ามาช่วยดังนี้

if($model->load(Yii::$app->request->post() && $model2->load(Yii::$app->request->post())
{
    $transaction = Yii::$app->db->beginTransaction();
    try {
        $connection->createCommand($sql1)->execute();
        $connection->createCommand($sql2)->execute();
        //.... other SQL executions
        $model->save();
        $model2->model_id = $model->id;
        $model2->save();
        $transaction->commit();
        return $this->redirect(['index']);
    } catch (\Exception $e) {
        $transaction->rollBack();
        throw $e;
    }
}

สามารถดูรายละเอียดเพิ่มเติมได้ที่ 

http://www.yiiframework.com/doc-2.0/yii-db-transaction.html

สรุป

Transaction ช่วยให้เราสามารถพัฒนา Web Application ให้มีความเป็นมืออาชีพมากยิ่งขึ้นและที่สำคัญทำให้ความถูกต้องของข้อมูลมีมากขึ้นอีกด้วย


หากบทเรียนรู้มีความผิดพลาดประการใด หรือมีข้อเสนอแนะกรุณาแจ้ง contact@programmerthailand.com
มานพ กองอุ่น

มานพ กองอุ่น
admin

  • 2 เพื่อน
  • 13 ผู้ติดตาม
  • 763 โพสต์