gpt4 book ai didi

cakephp - 在 CakePHP 的查找函数中使用 DISTINCT

转载 作者:行者123 更新时间:2023-12-03 22:46:35 26 4
gpt4 key购买 nike

我正在编写 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 字段,但无法摆脱它。

谢谢,
弗兰克·卢克

最佳答案

尝试使用“分组依据”,它完美地工作:

$first_names = $this->Person->find('list', array(
'fields'=>'first_name',
'order'=>'Person.first_name ASC',
'conditions'=> array('Person.status'=>'1'),
'group' => 'first_name'));

关于cakephp - 在 CakePHP 的查找函数中使用 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1718482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com