CakePHP: สร้าง model แบบ many-to-many อย่างง่าย(มาก)

เวลาใช้ ORM ของ CakePHP เรื่องหนึ่งที่ผมรู้สึกว่าจะซับซ้อนสักหน่อย อย่างน้อยๆ ก็สำหรับผมก็คือ เวลาเขียน model ให้ใช้ความสัมพันธ์แบบ many to many ที่ต้องใส่ parameter เยอะ.

แต่ว่ามันก็ไม่จำเป็นต้องยากเสมอไป ถ้าเราเป็นรู้ก่อน ว่า convention ของ CakePHP คืออะไรแล้วก็เขียนตามนั้น

สมมุติว่าเรามี 2 table ได้แก่ documents และ tags ที่จะให้สัมพันธ์กัน แบบ many to many. แน่นอนต้องมี table ที่เอาไว้เก็บความสัมพันธ์โดยเฉพาะเลยอีก table หนึ่ง แต่ปัญหาก็มีอยู่ว่าให้ชื่อว่าอะไรดี ตามวิธีของ CakePHP คือต้องสร้าง table ใหม่ขึ้นมาชื่อเรียกตามลำดับตัวอักษร ในกรณีนี้คือ documents_tags ถ้าต้องว่า tags_documents แบบนี้ไม่ได้ เพราะว่าตัว d มันต้องมาก่อนตัว t ส่วน field ใน table ก็ประกอบด้วย id, document_id, tag_id

แล้วก็เขียน code แบบนี้

สำหรับ document.php

<?php
class Document extends AppModel {
	var $name = 'Document';
        var $hasAndBelongsToMany = 'Tag';
}
?>

สำหรับ tag.php

<?php
class Tag extends AppModel {
	var $name = 'Tag';
    var $hasAndBelongsToMany = 'Textunit';
}
?>

เพิ่มอีกไฟล์ละบรรทัดเองง่ายมาก แต่ว่าจะทำอะไรซับซ้อนกว่านี้ก็ได้ แต่ว่าสำหรับผมตอนนี้แค่นี้ก็พอใช้แล้ว

อ้างอิง
http://book.cakephp.org/view/78/Associations-Linking-Models-Together

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s