Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP 3中的联接查询无法检测到第一列';我怎样才能解决这个问题?_Php_Mysql_Cakephp - Fatal编程技术网

CakePHP 3中的联接查询无法检测到第一列';我怎样才能解决这个问题?

CakePHP 3中的联接查询无法检测到第一列';我怎样才能解决这个问题?,php,mysql,cakephp,Php,Mysql,Cakephp,我最近从XAMPP上传了一个项目到测试服务器,并立即开始在环境中遇到一些差异。 我遇到的第一件事是: 未找到列:“where子句”中的1054未知列“users.id” 这在Xampp中运行良好,但在Linux服务器上会产生上述错误 $this->find() 位于供用户使用的模型中,因此最初将重点放在该表上 这是由join直接引起的-没有它,users.id工作得很好。我认为一个解决方案是为users.id提供一个别名,但这可能不正确 如何解决这个问题呢?我不做CakePHP,但我做sql。我

我最近从XAMPP上传了一个项目到测试服务器,并立即开始在环境中遇到一些差异。 我遇到的第一件事是:

未找到列:“where子句”中的1054未知列“users.id”

这在Xampp中运行良好,但在Linux服务器上会产生上述错误

$this->find()

位于供用户使用的模型中,因此最初将重点放在该表上

这是由join直接引起的-没有它,users.id工作得很好。我认为一个解决方案是为users.id提供一个别名,但这可能不正确


如何解决这个问题呢?

我不做CakePHP,但我做sql。我看不出您在哪里包含了包含该字段的“users”表。我只看到userdata的包含和别名(别名为“u”)。但是没有“users”表,除非它在代码中的其他地方(这可能会很好地包括在内,即使对于那些知道cake的人来说也是如此,因为这是错误明确说明的内容)

除非预计Cake会对users表进行假设,否则在我看到其他证据之前,它似乎不会被包括在内;)

谢谢你的蛋糕介绍


此外,您可能需要打开mysql日志,以验证cake框架是否正确创建了连接(即:在mysql日志中一次查看完整查询)

我为那些不熟悉的人添加了一些内容。CakePHP3本质上是一个轻量级MVC框架,它还封装了一些适当的安全性和数据库结构,但在其他方面,它允许您在上面创建所需的内容。它还提供了一些有用的帮助。对于所讨论的表,查询位于表的模型中-它会在$this->()中自动获取它,如前所述:在看到演示“this”的代码之前,我无法确定字段是否存在。此外,您可能希望打开mysql日志,以验证cake框架是否正确创建了连接(即:在mysql日志中一次查看完整查询)。有了这个完整的问题,我就能告诉你出了什么问题。。。但把它翻译成蛋糕全靠你自己;)根据CakePHP约定,别名应为驼峰形,即
Users
,而不是
Users
。也就是说,当您遇到SQL错误时,请始终显示生成的SQL查询-谢谢!请你回答一下好吗?这确实是解决方案,我愿意接受它。考虑到小写字母在Xampp上的作用,我相信符号设置是不同的。
    $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();