我正在使用cakePHP创建一个todo应用程序。CakePHP为您创建查询等。这就是为什么不存在错误。
错误:
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Projecttask.projecttasks_name' in 'field list'查询:
SQL Query: SELECT `Itemrequirement`.`itemreq_id`, `Projecttask`.`projecttasks_name`
FROM `gtd`.`itemrequirements` AS `Itemrequirement`
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskParent` ON (`Itemrequirement`.`itemreqs_rel_projectparents` = `ProjecttaskParent`.`projecttasks_id`)
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskChild` ON (`Itemrequirement`.`itemreqs_rel_projectchilds` = `ProjecttaskChild`.`projecttasks_id`)
WHERE 1 = 1
ORDER BY `Itemrequirement`.`itemreq_id` asc LIMIT 10000数据库:

我变得越来越不懂了,因为我已经用phpmyadmin手动尝试了很多东西。
发布于 2013-09-19 10:29:06
您正在使用projecttasks两次
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskParent` ...
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskChild` ...但是使用别名ProjecttaskParent和ProjecttaskChild,所以您必须使用别名而不是表名。
`ProjecttaskParent`.`projecttasks_name`或
`ProjecttaskChild`.`projecttasks_name`查询应该如下所示(示例中使用ProjecttaskChild别名)
SELECT `Itemrequirement`.`itemreq_id`, `ProjecttaskChild`.`projecttasks_name`
FROM `gtd`.`itemrequirements` AS `Itemrequirement`
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskParent` ON (`Itemrequirement`.`itemreqs_rel_projectparents` = `ProjecttaskParent`.`projecttasks_id`)
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskChild` ON (`Itemrequirement`.`itemreqs_rel_projectchilds` = `ProjecttaskChild`.`projecttasks_id`)
WHERE 1 = 1
ORDER BY `Itemrequirement`.`itemreq_id` asc LIMIT 10000发布于 2013-09-19 10:30:46
您正在从数据库名ProjectTask中选择,并且使用别名(ProjectTaskParent和ProjectTaskChild)。
您的查询应该是:
SELECT `Itemrequirement`.`itemreq_id`, `ProjecttaskParent`.`projecttasks_name` FROM `gtd`.`itemrequirements` AS `Itemrequirement` LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskParent` ON (`Itemrequirement`.`itemreqs_rel_projectparents` = `ProjecttaskParent`.`projecttasks_id`) LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskChild` ON (`Itemrequirement`.`itemreqs_rel_projectchilds` = `ProjecttaskChild`.`projecttasks_id`) WHERE 1 = 1 ORDER BY `Itemrequirement`.`itemreq_id` asc LIMIT 10000将Projecttask.projecttasks_name改为ProjecttaskParent.projecttasks_name或ProjecttaskChild.projecttasks_name
发布于 2013-09-19 10:33:09
没有投影
在错误消息中:
“字段列表”中的未知列“Projecttask.projecttasks_name”
所以有一个表/别名Projecttask和一个字段projecttasks_name。除查询外:
FROM `gtd`.`itemrequirements` AS `Itemrequirement`
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskParent` ...
LEFT JOIN `gtd`.`projecttasks` AS `ProjecttaskChild` ...表projecttasks有两个不同的别名,即问题不是表中不存在字段,而是查询中没有具有该名称/别名的表。
您可能想要的查询是:
SELECT
`Itemrequirement`.`itemreq_id`,
`ProjecttaskParent`.`projecttasks_name` # <- alias updated
FROM
`gtd`.`itemrequirements` AS `Itemrequirement`
LEFT JOIN
`gtd`.`projecttasks` AS `ProjecttaskParent` ON (...)
LEFT JOIN
`gtd`.`projecttasks` AS `ProjecttaskChild` ON (...)
WHERE
1 = 1
ORDER BY
`Itemrequirement`.`itemreq_id` asc
LIMIT 10000PHP代码?
查询的代码未显示,因此需要更改
$Itemrequirement->find('all', array(
'conditions' => array(
'Projecttask.projecttask_name' ...至
$Itemrequirement->find('all', array(
'conditions' => array(
'ProjecttaskParent.projecttask_name' ...或者使用escapeField确保别名是正确的
$Itemrequirement->find('all', array(
'conditions' => array(
$Itemrequirement->ProjecttaskParent->escapeField('projecttask_name') ...https://stackoverflow.com/questions/18892169
复制相似问题