25
CakePHP hasMany
สวัสดีครับ วันนี้ผมจะแนะนำเรื่องของการใช้ Models ของ CakePHP ในการเชื่อมโยง (Relationship)
หรือการใช้ Foreign Key (FK) ในการดึงข้อมูลของอีก ตางรางหนึ่งที่มีการเชื่อมโยงกันนะครับ
การเชื่อมโยงตารางทั้งสองนั้นจะต้องมีการทำหนด foreign key ให้กับตารางที่เราต้องการจะเชื่อมด้วยนะครับ
อันบทความนี้ผมจะขอ ยกตัวอย่าง การทำ Webboard นะครับ
Webboard ที่ผมจะสร้างนี้จะมีตางรางอยู่ 2 ตางรางครับ คือ
1. ตาราง Topics ใช้สำหรับเก็บหัวข้อของกระทู้ครับ และเก็บ รหัสของกระทู้หรือ Primary key นั้นเอง
2. ตาราง Comments ใช้เก็บข้อความที่จะ Comment ในกระทู้นั้นๆนะครับ
โครงสร้างของ ตารางทั้งสอง
ตาราง Topics
- id (PK)
- headline
- detail
ตาราง Comments
- id (PK)
- topic_id (FK)
- detail
เมื่อเรามี 2 ตารางแล้วเวลาเขียน Models นั้นก็จะต้องมีด้วยกัน 2 Models เช่นกันนะครับ
1. Model Topic (Path : /app/models/topic.php)
2. Model Comment (Path : /app/models/comment.php)
มาเริ่มเขียน Class กันเลยก็แล้วกันครับ
Class Topic Model
1 2 3 4 5 6 | //Path : /app/models/topic.php class Topic extends AppModel { var $name = 'Topic'; var $hasMany = 'Comment'; } |
Class Comment Model
1 2 3 4 | //Path : /app/models/comment.php class Comment extends AppModel { var $name = 'comment'; |
เท่านี้เราก็จะสามารถเรียกแค่ Models Topic ตัวเดียวแต่เราจะได้ข้อมูลจากตาราง Comment มาด้วยครับ
เพียงแต่เราระบบการค้นหาใน Controller โดยให้หาจาก PK ของ ตาราง Topic ครับ
มาดูตัวอย่างใน Controller กันเลย
Class Topics Controller
1 2 3 4 5 6 7 8 9 10 11 12 | class TopicsController extends AppController { var $name = 'Topics'; function index() { $this->flash('',''); $getId = $this->passedArgs['id']; $result = $this->Topic->findById($getId); //Out put print_r($result); } } |
ผลลัพธ์ที่ได้นั้นจะอยู่ในรูปแบบของ Array ลองสั่ง Print_r ดูแล้วจะเห็นผลครับจากนั้นเราก็ไปทำการเขียน Views
เพื่อรับค่าแล้ว Loop เอาค่าออกมาครับ
ก็ขอจบบทความเรื่องของการใช้ hasMany ใน Model ของ CakePHP ใว้เพียงเท่านี้ครับผม
ยังมีการเรียกใช้ hasMany ใน Controller ด้วยนะครับ เดี๋ยวผมจะเขียนอธิบายในบทความต่อไปให้ครับผม
ช่วยมาบอกต่อด้วยน๊า….ว่างๆๆ add มาคุยกันมั่งนะคะ…มีเรื่องอยากถามเยอะเรยยย
อธิบายการทำทั้ง mvc ของ webbord เลยนะคะ
ขอบคุณค่ะ
นุ่น
phoenix_foru@hotmail.com
Add A Comment