CakePHP 3中的已连接查询无法检测到第一列的ID。我该如何解决这个问题?
我最近从XAMPP上传了一个项目到测试服务器,并立即开始运行环境中的一些差异。 我要对付的第一件事是这样的:CakePHP 3中的已连接查询无法检测到第一列的ID。我该如何解决这个问题?
柱未发现:在 'where子句'
$query = $this->find()->where(['users.id' => $Id])->hydrate(false)->join([
'table' => 'userdata',
'alias' => 'u',
'type' => 'LEFT',
'conditions' => 'u.userID = users.id'
])->autoFields(true) // selecting all fields from current table
->select(["u.avatar", "u.birthday", "u.views", "u.bio", "u.lastIP"]);
return $query->toArray();
这XAMPP工作的罚款1054未知列 'users.id',但在Linux服务器上正在产生上述错误。
$this->find()
位于模型的用户,所以它最初侧重于表。
它是由连接直接引起的 - 没有它,users.id完美地工作。我相信一个解决方案是给users.id一个别名,但这可能不正确。
这怎么解决?
我不做CakePHP,但我做的是sql。我没有看到你在哪个地方加入了“用户”表。我只看到用户数据的包含和别名(别名为“u”)。但是没有“用户”表,除非这是你代码中的其他地方(即使对于那些了解蛋糕的人来说,这可能是很好的包括,因为这明显是错误说明的)。
除非蛋糕有望使对用户表的假设,这样看来,它不包含进来,直到我看到的证据,否则;)
感谢蛋糕介绍。
此外,您可能要打开mysql的日志记录,以验证蛋糕框架创建正确(即:查看完整的查询一次全部在MySQL日志)加入
我为那些陌生的人添加了一点点。 CakePHP 3基本上是一个轻量级的MVC框架,它也封装了一些体面的安全和数据库结构 - 但是否则它可以让你创建你需要的东西。它也有一些有用的帮手。 – Merlin
对于有问题的表格,查询位于表格的模型中 - 它在$ this - >() – Merlin
中自动抓取它如前所述:在我看到演示“this”的代码之前,我不知道确保该字段存在。另外,你可能想打开mysql日志记录来验证Cake框架是否正确创建连接(即:在mysql日志中一次查看完整查询)。有了这个完整的查询,我可以告诉你哪里出了问题......但将它翻译成蛋糕就在你身上;) – TheSatinKnight
根据CakePHP的公约,别名应该是骆驼帽子,即'用户',而不是'用户'。这就是说,当你遇到SQL错误时,请始终显示生成的SQL查询 - 谢谢! – ndm
请问您可以做出这个答案吗?这确实是解决方案,我想接受它。 – Merlin
考虑到在Xampp上使用的小写字母,我相信符号设置是不同的。 – Merlin