Saya sedang menulis aplikasi CakePHP 1.2. Saya memiliki daftar orang-orang yang saya ingin pengguna dapat memfilternya di berbagai bidang. Untuk setiap bidang yang dapat difilter, saya memiliki daftar drop-down. Pilih kombinasi filter, klik filter, dan halaman hanya menampilkan rekaman yang cocok.
Di people_controller, saya punya sedikit kode ini:
$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);
(Status = 1 karena saya menggunakan soft delete.)
Itu menciptakan daftar semua nama_depan. Tapi duplikatnya ada di sana.
Menggali di Buku Masak, saya menemukan contoh menggunakan kata kunci DISTINCT dan memodifikasi kode saya untuk menggunakannya.
$first_names = $this->Person->find('list', array(
'fields'=>'DISTINCT first_name',
'order'=>'Person.first_name ASC',
'conditions'=> array('Person.status'=>'1')
));
Ini memberi saya kesalahan SQL seperti ini:
Query: SELECT `Person`.`id`, DISTINCT `Person`.` first_name` FROM `people` AS `Person` WHERE `Person`.`status` = 1 ORDER BY `Person`.`first_name` ASC
Masalahnya jelas. Kerangka kerja ini menambahkan Person.id ke kueri. Saya menduga ini berasal dari penggunaan 'daftar'.
Saya akan menggunakan filter yang dipilih untuk membuat pernyataan SQL ketika tombol filter diklik. Saya tidak memerlukan bidang is, tetapi tidak dapat menghilangkannya.
Terima kasih, Frank Luke