ฉันกำลังเขียนแอป CakePHP 1.2 ฉันมีรายชื่อบุคคลที่ต้องการให้ผู้ใช้สามารถกรองข้อมูลในฟิลด์ต่างๆ ได้ ฉันมีรายการแบบเลื่อนลงสำหรับแต่ละช่องที่กรองได้ เลือกชุดตัวกรอง คลิกตัวกรอง และเพจจะแสดงเฉพาะเรกคอร์ดที่ตรงกัน
ใน people_controller ฉันมีโค้ดเล็กน้อยนี้:
$first_names = $this->Person->find('list', array(
'fields'=>'first_name',
'order'=>'Person.first_name ASC',
'conditions'=> array('Person.status'=>'1')
));
$this->set('first_names', $first_names);
(สถานะ = 1 เนื่องจากฉันใช้การลบแบบนุ่มนวล)
นั่นจะสร้างรายการเรียงลำดับของ first_names ทั้งหมด แต่มีรายการที่ซ้ำกันอยู่ในนั้น
เมื่อค้นดูในตำราอาหาร ฉันพบตัวอย่างโดยใช้คีย์เวิร์ด DISTINCT และแก้ไขโค้ดของฉันเพื่อใช้มัน
$first_names = $this->Person->find('list', array(
'fields'=>'DISTINCT first_name',
'order'=>'Person.first_name ASC',
'conditions'=> array('Person.status'=>'1')
));
สิ่งนี้ทำให้ฉันมีข้อผิดพลาด SQL เช่นนี้:
Query: SELECT `Person`.`id`, DISTINCT `Person`.` first_name` FROM `people` AS `Person` WHERE `Person`.`status` = 1 ORDER BY `Person`.`first_name` ASC
ปัญหาก็ชัดเจน กรอบงานกำลังเพิ่ม Person.id ให้กับแบบสอบถาม ฉันสงสัยว่าสิ่งนี้มาจากการใช้ 'รายการ'
ฉันจะใช้ตัวกรองที่เลือกเพื่อสร้างคำสั่ง SQL เมื่อคลิกปุ่มตัวกรอง ฉันไม่ต้องการฟิลด์ is แต่ไม่สามารถกำจัดมันได้
ขอบคุณแฟรงค์ลุค