【发布时间】:2014-06-13 13:53:13
【问题描述】:
我在 cake php 2.1 中有以下代码。我尝试获取唯一字符串消息的列表,删除所有重复项。
$this->loadModel('ErrorMessage');
$this->ErrorMessage->recursive = -1;
$error_messages = $this->ErrorMessage->find('list',
array(
'fields' => array('DISTINCT message'),
)
);
这会产生以下错误:
错误:SQLSTATE[42000]:语法错误或访问冲突:1064 你 您的 SQL 语法有错误;检查对应的手册 您的 MySQL 服务器版本,以便在 'DISTINCT 附近使用正确的语法
ErrorMessage. messageFROMintermatte.error_messagesAS 第 1 行的“ErrorMes”SQL 查询:SELECT
ErrorMessage.id, DISTINCTErrorMessage. messageFROMintermatte.error_messagesASErrorMessageWHERE 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 不要这样做?
我当然可以使用查询,但这并不“好”。 ;)
【问题讨论】:
标签: php mysql sql cakephp distinct