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

时间:2013-08-12 21:18:37

标签: php cakephp cakephp-1.3

我正在尝试更新数据库中一个字段中的多个记录。出于某种原因,我不断收到SQL错误:1054:'字段列表'中的未知列'520947b9'。 502947B9是我的身份证明。我不明白为什么这个价值被视为一个字段列表。这是我的代码。那就是说,我不确定我是否正确更新了这些记录。如果我不能请指出我。谢谢!

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)
            );
        }



    }

}

这是我的错误

查询:更新declinations AS Declination LEFT JOIN policies AS Policy ON(Declinationpolicy_id = Policyid)SET Declinationpolicy_id = 520947b9-0210-4067-94ea-70f8ae78509d WHERE Declinationcoverage_id&lt; ='520947b9-1fa0-45db- 992e-70f8ae78509d'

查询:更新declinations AS Declination LEFT JOIN policies AS Policy ON(Declinationpolicy_id = Policyid)SET Declinationpolicy_id = 520947b9-0694-4724-b353-70f8ae78509d WHERE Declinationcoverage_id&lt; ='520947b9-1fa0-45db- 992e-70f8ae78509d'

2 个答案:

答案 0 :(得分:0)

根据查询的外观,updateAll无法将$key识别为字符串。要么像这样投射,要么自己添加'个字符。例如:

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

这是SQL错误。

现在

  

“那就是说,我不确定我是否正确更新了这些记录。”

......好吧,你想做什么?阅读你的代码,你得到一系列Policy's ID并用coverage_id <= $coverageId更新所有Declinations,这没有多大意义,因为foreach正在为同样的条件更新policy_id,所以最后你会感知最后一次改变:foreach的最后一次policy_id对于每个覆盖范围,覆盖范围等于或小于$coverage_id ....对我来说没有多大意义,甚至不知道你需要做什么。

答案 1 :(得分:0)

基于SQL并假设您正在使用ORM,在我看来,当真正需要为字符串时,policy_id被定义为您的Declination模型中的数字字段。 Coverage_id字段工作正常,因此比较两个定义。