1

我正在尝试更新数据库中一个字段中的多条记录。出于某种原因,我不断收到 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 declinationsAS DeclinationLEFT JOIN policiesAS PolicyON ( Declination. policy_id= Policy. id) SET Declinationpolicy_id= 520947b9-0210-4067-94ea-70f8ae78509d 哪里Declinationcoverage_id<= '520947b9-1fa0-45db-992e-70f8ae78509d'

查询: UPDATE declinationsAS DeclinationLEFT JOIN policiesAS PolicyON ( Declination. policy_id= Policy. id) SET Declinationpolicy_id= 520947b9-0694-4724-b353-70f8ae78509d 哪里Declinationcoverage_id<= '520947b9-1fa0-45db-992e-70f8ae78509d'

4

2 回答 2

0

根据您的查询,updateAll没有识别$key为字符串。要么这样投射,要么'自己添加角色。例子:

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

那是SQL错误。

现在

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

……嗯,你想做什么?阅读您的代码,您将获得一组 Policy 的 id 并使用 a 更新所有 Declinations coverage_id <= $coverageId,这没有多大意义,因为该 foreach 正在针对相同条件更新 policy_id,因此最终您将感知到最后的更改:每个 Declination 上 foreach 的最后一个 policy_id,coverage_id 等于或小于$coverage_id...。对我来说没有多大意义,即使不知道你需要做什么。

于 2013-08-12T21:43:43.713 回答
0

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

于 2013-08-12T21:45:38.890 回答