我正在写一个Cake
PHP 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);
(Status = 1,因为我正在使用软删除.)
这将创建所有first_names的有序列表.但重复的是在那里.
在Cookbook中搜索,我发现一个使用DISTINCT关键字并修改了我的代码来使用它的例子.
$first_names = $this->Person->find('list',array( 'fields'=>'DISTINCT first_name','conditions'=> array('Person.status'=>'1') ));
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语句.我不需要这个字段,但不能摆脱它.
谢谢,
弗兰克·卢克
你说得对,看来你不能用列表DISTINCT.因为你不需要id,只能使用这些名字,你可以使用上面的所有内容,然后$first_names = Set :: extract($first_names,’/ Person / first_name’);.这将给你一个具有不同名字的数组.