ฟังก์ชัน scopes() คืออะไร?

ฟังก์ชัน scopes() ที่ Model ใน Yii คืออะไร?

  • คำว่า scopes ถ้าแปล จะหมายถึง ขอบเขต
  • scopes() จะทำงานร่วมกันกับ Active Record class
  • ฟังก์ชันนี้จะถูกเขียนไว้ที่ Model
  • ฟังก์ชัน scopes() เป็นการสร้างกลุ่มการค้นหา เช่น publish (เผยแพร่), recently (ข้อมูลล่าสุด) [สามารถตั้งชื่อได้ตามอัธยาศัย]
ตัวอย่าง จะกำหนดให้ Query ข้อมูลที่สามารถเผยแพร่ได้ (กำหนดให้สถานะ = 1 คือ เผยแพร่ได้) กับ ข้อมูลล่าสุด 5 อันดับ จะสามารถเขียนโค้ดได้ดังนี้

return array(
    'published'=>array(
          'condition'=>'status=1',
    ),
    'recently'=>array(
          'order'=>'create_time DESC',
          'limit'=>5,
    ),
);
ถ้า scopes ด้านบนถูกเขียนไว้ที่ Model ที่ชื่อว่า "Post" จะสามารถเรียกใช้ได้ โดยใช้คำสั่ง ดังนี้
$posts=Post::model()->published()->findAll();
$posts=Post::model()->published()->recently()->findAll();
$posts=Post::model()->published()->with('comments')->findAll();

0 ความคิดเห็น:

แสดงความคิดเห็น