我正在尝试更新数据库中一个字段中的多个记录。出于某种原因,我不断收到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(Declination
。policy_id
= Policy
。 id
)SET Declination
。policy_id
= 520947b9-0210-4067-94ea-70f8ae78509d WHERE Declination
。coverage_id
&lt; ='520947b9-1fa0-45db- 992e-70f8ae78509d'
查询:更新declinations
AS Declination
LEFT JOIN policies
AS Policy
ON(Declination
。policy_id
= Policy
。 id
)SET Declination
。policy_id
= 520947b9-0694-4724-b353-70f8ae78509d WHERE Declination
。coverage_id
&lt; ='520947b9-1fa0-45db- 992e-70f8ae78509d'
答案 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字段工作正常,因此比较两个定义。