gpt4 book ai didi

php - Cake PHP自动将id字段添加到sql查询中

转载 作者:行者123 更新时间:2023-11-30 00:09:26 26 4
gpt4 key购买 nike

我在 cake php 2.1 中有以下代码。我尝试获取唯一字符串消息的列表,删除所有重复项。

$this->loadModel('ErrorMessage');
$this->ErrorMessage->recursive = -1;
$error_messages = $this->ErrorMessage->find('list',
array(
'fields' => array('DISTINCT message'),
)
);

这会产生以下错误:

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT ErrorMessage. message FROM intermatte.error_messages AS `ErrorMes' at line 1

SQL Query: SELECT ErrorMessage.id, DISTINCT ErrorMessage.
message
FROM intermatte.error_messages AS ErrorMessage WHERE 1 = 1

有趣的部分是生成的查询; Cake 已自动包含 id 字段!

我单独测试查询,它产生预期结果:(唯一字符串列表)

SELECT DISTINCT message FROM error_messages;

以下是创建表供引用:

CREATE TABLE `error_messages` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`message` MEDIUMTEXT NULL COLLATE 'utf8_unicode_ci',
`figure` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`created` DATETIME NULL DEFAULT NULL,
`modified` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
ROW_FORMAT=COMPACT;

所以问题是,为什么 cake 会自动包含 id 字段,我怎样才能告诉 cake 不这样做呢?

我当然可以使用查询,但这并不“好”。 ;)

最佳答案

是的,CAKEPHP 会做到这一点,你可以做的是使用 GROUP BY 子句来解决这个问题,

$error_messages = $this->ErrorMessage->find('list', array(
'fields'=>'message',
'group' => 'message'));

关于php - Cake PHP自动将id字段添加到sql查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207033/

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