แก้ปัญหาการจัดการ 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 ขึ้นมาก่อนครับ

และทำการกำหนดค่า return ดังต่อไปนี้

โดย createdAtAttribute และ updatedAtAttribute คือฟิลด์ที่จะใช้เก็บ Timestamp  ส่วน createdByAttribute และ updatedByAttribute จะคือฟิงด์ที่เก็บ Blameable Id นะครับ

หากผิดพลาดประการใดต้องขออภัยด้วยครับ

Categories: สาระ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *