gpt4 book ai didi

CakePHP 2.1 - 如何在 find() 中正确使用 DISTINCT

转载 作者:行者123 更新时间:2023-12-04 01:49:48 24 4
gpt4 key购买 nike

我有一个让我发疯的问题,我不得不承认我在 CakePHP 方面经验不足。正如在这个问题中提到的,
Using DISTINCT in a CakePHP find function ,以这种方式使用 DISTINCT:

$this->Model->find('all', array('fields'=>'DISTINCT field_name'));

不返回 DISTINCT 值,而是返回所有行。实际上,这里的 DISTINCT 完全没有意义,因为出于某种原因,CakePHP 添加了 TableName . id在 SQL 查询中(为什么??我可以删除 id 引用吗??),有效地返回每个 DISTINCT 主键(=所有行=无用)。

所以,我仍然想返回特定 field_name 列的 DISTINCT 值。我不能只使用 find('all') 或 find('list') 函数吗?使用上面链接中描述的这个 Set::extract() 函数真的是这样做的正确方法吗?这似乎是 CakePHP 过于间接的解决方案,通常 Cake 让我的生活更轻松。 :-) 将 find 和 DISTINCT 一起使用的正确方法是什么?也许 DISTINCT 不适用于 find()?

查看 CookBook,他们说:“执行 DISTINCT 查询的快速示例。您可以以类似的方式使用其他运算符,例如 MIN()、MAX() 等:”
<?php
array(
'fields' => array('DISTINCT (User.name) AS my_column_name'),
'order' = >array('User.id DESC')
)
?>

来源: http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

这表明应该可以使用 DISTINCT,但这里是什么? (User.name) 是否对应于我想要 DISTINCT 的 field_name 或者 my_column_name 是我的 field_name?

最后,从 CakePHP 1.x 迁移到 CakePHP 2.x 时,这些有什么变化吗?即在 Stackoverflow 上看到的 CakePHP 1.x 的答案仍然相关吗?

提前致谢!

最佳答案

是的,第二个片段是执行 SELECT DISTINCT 的正确方法在 CakePHP 2.x 中。 User.name对应于字段名称,在本例中对应于字段 nameusers table 。 my_column_name是结果集中字段名称的(可选)别名,即代替 name该字段将命名为 my_column_name在结果集中。

关于CakePHP 2.1 - 如何在 find() 中正确使用 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170885/

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