Criteria ถือว่าเป็นพระเอกของการ Select ข้อมูลเลยก็ว่าได้ครับ เราสามารถสร้าง Criteria ได้หลายแบบ มาดูตัวอย่างบางส่วนที่จะช่วยให้เราสามารถเข้าใจเรื่องของ Criteria มากยิ่งขึ้นครับ
โดยปกติ เราจะสร้าง Criteria ดังนี้ เป็นการสร้างเงื่อนไข WHERE price > 20 นั่นเอง
 

$criteria = new CDbCriteria();
$criteria->condition = "price > 20";
$Products = Product::model()->findAll($criteria)

หรือหากต้องการสร้าง Criteria พร้อมกับตอนที่ new ก็ได้เพียงส่งให้ Constructor ดังนี้

$criteria = new CDbCriteria(array('condition' => 'price > 20'));
$Products = Product::model()->findAll($criteria);

หรือหากต้องการใช้คำสั่ง Limit ด้วยก็ได้ครับโดยใช้ $criteria->limit ดังนี้

$criteria = new CDbCriteria();
$criteria->condition = "price > 20";
$criteria->limit = 1;
$Products = Product::model()->findAll($criteria);

หรือหากต้องการใช้ Offset ด้วยก็ได้ครับโดยใช้ $criteria->offset (หมายเหตุ บางครั้งเมื่อใช้งาน Offset และ Limit อาจจะต้อง  Disable pagination ใน CActiveDataProvider) ดังนี้

$criteria = new CDbCriteria();
$criteria->condition = "price > 20";
$criteria->limit = 1;
$criteria->offset = 1;
$Products = Product::model()->findAll($criteria);

หรือหากต้องการใช้การเรียงลำดับ Order ด้วยก็ได้ครับโดยใช้ $criteria->order ดังนี้

$criteria = new CDbCriteria();
$criteria->condition = "price > 20";
$criteria->limit = 1;
$criteria->offset = 1;
$criteria->order = "name ASC";
$Products = Product::model()->findAll($criteria);

หรือหากต้องการเลือกบาง Column ก็ได้ครับ โดยใช้ $criteria->select ครับ

$criteria = new CDbCriteria();
$criteria->condition = "price > 20";
$criteria->limit = 1;
$criteria->offset = 1;
$criteria->order = "name ASC";
$criteria->select = "id, name";
$Products = Product::model()->findAll($criteria);

หรือหากต้องการ Join หลายตารางก็สามารถทำได้ครับโดยใช้ $criteria->with ดังนี้

$criteria = new CDbCriteria;
$criteria->with = array('foreign_table1',
                        'foreign_table2', 
                        'foreign_table2.foreign_table3');
$criteria->together = true; // ADDED THIS
$criteria->select = array('id');
$criteria->condition = "foreign_table1.col1=:col_val AND 
                        foreign_table3.col3=:col_val2";
$criteria->params = array(':col_val' => some_val, ':col_val2' => other_val);
$criteria->order = 'foreign_table3.col5 DESC';
$criteria->limit = 10;

 

ความคิดเห็น

หากบทเรียนรู้มีความผิดพลาดประการใด หรือมีข้อเสนอแนะกรุณาแจ้ง contact@programmerthailand.com