แก้ปัญหาการจัดการ Timestamp และการบันทึก User ที่ทำการแก้ไขหรือเพิ่มข้อมูลบน Database ด้วย Yii2 BlameableBehavior และ TimestampBehavior
ผมเชื่อว่าเมื่อก่อน หลาย ๆ คนคงเคยเจอกับความน่ารำคาญในการจัดการกับ Timestamp และการแทรคกิ้งคนที่เข้ามาแก้ไขข้อมูลในฐานข้อมูลผ่านระบบ ต้องมาคอยอัพเตดทุกครั้งมันไม่ใช่เรื่องสนุกแน่ ซึ่ง Framework ใหม่ ๆ ล้วนแต่มีโซลูชั่นในการแก้ปัญหานี้ โดยการทำการบันทึกให้แบบอัตโนมัติ ช่วยให้ Developer สามารถทำงานได้สะดวกขึ้นรวมไปถึง Yii2 ก็เช่นกันครับ
สิ่งที่ Yii2 นำมาช่วยคือ BlameableBehavior และ TimestampBehavior นั่นเองโดยที่มันจะคอยเชคให้ว่าใครเป็นคนเข้าสู่ระบบเพื่อบันทึกว่าใครเป็นคนแก้ไขหรือเพิ่มข้อมูล และยังอัพเดต Timestamp ให้อัตโนมัติโดยที่เราไม่ต้องทำอะไรเลย
การใช้งาน BlameableBehavior และ TimestampBehavior
การใช้งาน BlameableBehavior และ TimestampBehavior นั้นจะถูกเซตค่าจากใน Model โดยจะต้องทำการ Use เจ้านี่ก่อนเป็นอย่างแรกครับ
อ้อ ในฐานข้อมูลเราจำเป็นต้องมีฟิลด์ที่เก็บข้อมูล Timestamp และผู้จัดการข้อมูลด้วยนะครับ ยกตัวอย่างเช่น
- created_at ใช้สำหรับบันทึก Timestamp เมื่อมีการเพิ่ม Record ขึ้นมาใหม่
- updated_at ใช้สำหรับบันทึก Timestamp เมื่อมีการแก้ไขหรือเปลี่ยนแปลงข้อมูล
- created_by ใช้สำหรับบันทึก Id ข้อผู้ที่สร้าง Record นั้น
- updated_by ช้สำหรับบันทึก Id ข้อผู้ที่แก้ไขหรือเปลี่ยนแปลงข้อมูลล่คนาสุด
โดยจะต้องทำการเพิ่มฟังก์ชัน behaviors ขึ้นมาก่อนครับ
ในตัวนี้แปะไว้ใน Model ครับ
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'send_at',
'updatedAtAttribute' => 'updated_at',
'value' => new Expression( 'NOW()' ),
],
[
'class' => BlameableBehavior::className(),
//'createdByAttribute' => 'created_by',
'updatedByAttribute' => 'repair_by',
],
];
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น