在CakePHP find函数中使用DISTINCT

我正在写一个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’);.这将给你一个具有不同名字的数组.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...