Cakephp SQL错误1054字段列表中的未知列


Cakephp SQL Error 1054 Unknown Column In The Field List

我正在尝试更新数据库中一个字段中的多条记录。由于某种原因,我一直收到SQL错误:1054:"字段列表"中的未知列"520947b9"。502947B9是我的ID的一部分。我不明白为什么该值被视为字段列表。这是我的密码。也就是说,我不确定我是否正确更新了这些记录。如果我没有,请给我指出来。谢谢!!

public function findPolicyIds($coverageId = null) {
    $policyid = $this->Policy->find('all', array(
        'recursive' => -1,
        'conditions' => array('Policy.coverage_id' => $coverageId),
        'fields' => array('Policy.id')));
        foreach($policyid as $id) {
        $all[] = $id['Policy']['id'];
        foreach ($all as $key) {
        $this->Policy->Declination->updateAll(
              array('Declination.policy_id' => $key),
              array('Declination.coverage_id <=' => $coverageId)
            );
        }

    }
}

以下是我的错误

查询:UPDATE declinations AS Declination LEFT JOIN policies AS Policy ON(Declination.policy_id=Policy.id)SET Declinationpolicy_id=520947b9-0210-4067-94ea-70f8ae78509d,其中Declinationcoverage_id<='520947b9-1fa0-45db-992e-70f8ae78509d'

查询:UPDATE declinations AS Declination LEFT JOIN policies AS Policy ON(Declination.policy_id=Policy.id)SET Declinationpolicy_id=520947b9-0694-4724-b53-70f8ae78509d,其中Declinationcoverage_id<='520947b9-1fa0-45db-992e-70f8ae78509d'

从查询的外观来看,updateAll没有将$key识别为字符串。可以按此方式强制转换,也可以自己添加'字符。示例:

$this->Policy->Declination->updateAll(
          array('Declination.policy_id' => "'".$key."'"),
          array('Declination.coverage_id <=' => $coverageId)
        );

这就是SQL错误。

现在

"也就是说,我不确定我是否正确更新了这些记录。"

好吧,你想做什么?在阅读代码时,您将获得一个Policy的id数组,并使用coverage_id <= $coverageId更新所有Declination,这没有多大意义,因为foreach正在为相同的条件更新Policy_id,所以最终您将感知到最后一个更改:覆盖率_id等于或小于$coverage_id的每个Declination上foreach的最后一个Policy_id。。。。对我来说没有多大意义,甚至不知道你需要做什么。

基于SQL,假设您使用的是ORM,在我看来,policy_id在您的Declination模型中被定义为一个数字字段,而实际上它需要是一个字符串。Coverage_id字段工作正常,因此请比较这两个定义。