ORM = Object-relational mapping
ผมคิดคำอธิบายอย่างเป็นทางการไม่ถูกเหมือนกันนะครับ
ขออธิบายตามที่ผมเข้าใจว่า ไอ้เจ้า ORM เนี่ย มันจะทำให้เรามองข้อมูลเป็น Object
เช่น Object User, Object Blog
ถ้าถามว่าทำไมต้องมี ก็คือเพิ่มความสะดวกและลดความซ้ำซ้อนของ code ครับ
ยกตัวอย่างเช่น User ของเรามีข้อมูลได้แก่ first_name, last_name, email, password
ถ้าไม่ใช้ ORM เวลาเราอยากเพิ่ม User เราก็จะใช้วิธี
$query = "insert into `user` (`id`, `first_name`, `last_name`, `email`, `password`)
values('', '$first_name', '$last_name', '$email', '$password')"
แต่ถ้าใช้ ORM เราจะทำแบบนี้
$user = new User();
$user->first_name = $first_name;
$user->last_name = $last_name;
$user->email = $email;
$user->password = $password;
$user->save();
ส่วนเวลาจะอัปเดต แบบสั้นที่สุดก็ทำแบบนี้
$user = Doctrine_Core::getTable('User')->find(1); // 1 หมายถึง user id, User หมายถึงชื่อตาราง
$user->first_name = $first_name;
$user->last_name = $last_name;
$user->email = $email;
$user->password = $password;
$user->save();
โดยเบื้องหลังการสร้างคำสั่ง SQL ตัว ORM จะจัดการให้ทั้งหมด
คงจะพอเห็นภาพนะครับ