在CakePHP find函数中使用DISTINCT
发布时间:2020-12-13 13:47:01 所属栏目:PHP教程 来源:网络整理
导读:我正在写一个Cake PHP 1.2应用程序我有一个列表,我希望用户能够过滤不同的字段.对于每个可过滤的字段,我有一个下拉列表.选择过滤器组合,单击过滤器,该页面仅显示匹配的记录. 在people_controller中,我有这个代码: $first_names = $this-Person-find('list',
我正在写一个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') )); 这给我一个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语句.我不需要这个字段,但不能摆脱它. 谢谢,
你说得对,看来你不能用列表DISTINCT.因为你不需要id,只能使用这些名字,你可以使用上面的所有内容,然后$first_names = Set :: extract($first_names,’/ Person / first_name’);.这将给你一个具有不同名字的数组.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |