【问题标题】:Error: SQLSTATE[42S22]: Column not found: 1054 CakePHP错误:SQLSTATE [42S22]:找不到列:1054 CakePHP
【发布时间】:2016-09-19 15:59:37
【问题描述】:

我一直在寻找一些解决方案,以解决在尝试访问使用 CakePHP 烘焙的页面时出现的问题,但我仍然收到此错误:

错误:SQLSTATE[42S22]:未找到列:1054 未知列 'Billet. '字段列表'中的 user_id'

这是 Cake 创建的查询

SELECT `Billet`.`id` AS `Billet__id`, 
`Billet`.`created` AS `Billet__created`, 
`Billet`.`updated` AS `Billet__updated`, 
`Billet. user_id` AS `Billet__ user_id`,
`Billet`.`title` AS `Billet__title`, 
`Billet`.`tags` AS `Billet__tags`, 
`Billet`.`content` AS   `Billet__content`, 
`Users`.`id` AS `Users__id`, 
`Users`.`username` AS `Users__username`, 
`Users`.`password` AS `Users__password`, 
`Users`.`name` AS `Users__name`,
`Users`.`lastname` AS `Users__lastname`, 
`Users`.`birthdate` AS `Users__birthdate`, 
`Users`.`email` AS `Users__email` FROM `billet`
`Billet` INNER JOIN `users` `Users` ON `Users`.`id` = (`Billet. user_id`) LIMIT 20 OFFSET 0

查询的代码是直接由 Cake 烘焙的,所以我没有任何行来说明查询是如何完成的。

【问题讨论】:

  • 请显示您在 Cake PHP 中使用的创建查询的任何代码...
  • 肯定是在Billet__ user_idBillet. user_id 中添加了一个空格。
  • 正如我在下面所说的,代码是直接由 Cake 烘焙的,所以我不认为(在检查后我确定我没有任何明确的查询代码)有任何代码来自干扰的我
  • @DevNewb 如果在 Cake 的代码中恰好有一个 \n 正在生成您的查询,那么这也可能是空间的原因。我以前从未听说过这种行为,除非在某处对某些代码进行了某种更改。
  • 数据库中的列名可能包含前导空格。

标签: php mysql cakephp-3.0


【解决方案1】:

您在这一行缺少刻度,并且您在 AS 名称中有一个额外的空格:

`Billet. user_id` AS `Billet__ user_id`,

应该是

`Billet`.`user_id` AS `Billet__user_id`,

这一行也是如此:

`Billet` INNER JOIN `users` `Users` ON `Users`.`id` = (`Billet. user_id`) LIMIT 20 OFFSET 0

应该是

`Billet` INNER JOIN `users` `Users` ON `Users`.`id` = (`Billet`.`user_id`) LIMIT 20 OFFSET 0

【讨论】:

  • 感谢您的回答,但考虑到 Cake 是自动执行的,我该如何更改呢?
  • 好问题。展示您如何组装 Cake 查询。
  • 恐怕 Cake 本身就是这样做的,如果我不自欺欺人的话,我没有任何明确的行来显示查询是如何完成的。
  • 您使用的启动此查询的代码怎么样?告诉 Cake 获取用户和方坯的东西?
  • 我想我只是在某个地方做错了,我会从头再来一次,我现在标记它已解决,谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
  • 2015-12-08
相关资源
最近更新 更多