Я пишу приложение 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. Но дубликаты там.
Копаясь в Cookbook, я нашел пример с использованием ключевого слова 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, но не могу избавиться от него.
Спасибо, Фрэнк Люк