CakePHP – created and modified field

ใน CakePHP ถ้าเราอยากรู้ว่า record ของ model ถูกสร้างขึ้นเมื่อไหร่ และถูก update ตอนไหน เราสามารถเพิ่ม field ชื่อ created และ modified ชนิด DATETIME ไว้ใน table ที่สัมพันธ์กับ model นั้นๆ

CakePHP กับการติดต่อฐานข้อมูลด้วย Unicode

blog ช่วงหลังๆคงได้เขียนเกี่ยวกับ CakePHP กันเยอะหน่อย เพราะงานในช่วงนี้ต้องกลับมาใช้ PHP ถ้าใครเข้าใจ MVC ดีอยู่แล้วผมแนะนำตัวนี้เลย ไม่รู้จะพอๆกับ Rails หรือเปล่า แต่เท่าที่ลองใช้ก็พอใจครับ

มาเข้าเรื่องกัน ในฐานข้อมูลอย่าง MySQL นั้นเราสามารถกำหนด default character set ได้ ซึ่งถ้าเราไม่บอกมันว่าเราจะคุยกับฐานข้อมูลด้วย character encoding ตัวไหน มันก็จะใช้ค่า default นั้นล่ะ ปัญหามีอยู่ว่า MySQL ที่ลงมาให้ในแต่ละ Linux Distribution กำหนด default character encoding มาไม่เหมือนกัน อย่าง Gentoo 2008.0 นี่ใช้ UTF-8 ส่วน Debian Lenny ใช้ Latin

ใน CakePHP เราสามารถกำหนดค่า encoding ได้ว่าจะใช้แบบไหน ถ้าเราไม่กำหนดมันก็จะใช้ค่า default ของระบบ เดิมผมทดสอบระบบบน Gentoo ซึ่งไม่ได้กำหนดค่านี้ลงไป ข้อมูลภาษาไทยที่ query ก็ออกมาเรียบร้อยดี แต่พอ deploy ไปบน Debian เท่านั้นล่ะ กลายเป็นเครื่องหมาย ? หมดเลย มานั่งเปิด manual ดูอีกรอบเค้าให้ระบุลงไปใน config file app/config/database.php ด้วยครับ เพื่อความปลอดภัย

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' =>  'localhost',
    'login' => 'myuser',
    'password' => 'mypass',
    'database' => 'mydb',
    'prefix' => '',
    'encoding' => 'utf8',
);