2013-08-12 2 views
1

Я пытаюсь обновить несколько записей в одном поле в моей базе данных. По какой-то причине я продолжаю получать SQL Error: 1054: Неизвестный столбец «520947b9» в «списке полей». 502947B9 отличается от моего ID. Я не понимаю, почему это значение рассматривается как список полей. Вот мой код. Тем не менее, я не уверен, что я правильно обновляю эти записи. Если я не прошу указать мне это. Благодаря!!Ошибка Cakephp SQL 1054 Неизвестная колонка в списке полей

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 SET Declination (Declinationpolicy_id = Policyid..). policy_id = 520947b9-0210-4067-94ea-70f8ae78509d ГДЕ Declination. coverage_id < = '520947b9-1fa0-45db-992e-70f8ae78509d'

Запрос: ОБНОВЛЕНИЕ declinations КАК Declination LEFT JOIN policies КАК Policy ВКЛ (.. Declinationpolicy_id = Policyid) SET Declination. policy_id = 520947b9-0694-4724-b353-70f8ae78509d ГДЕ Declination. coverage_id < = '520947b9-1fa0-45db-992e-70f8ae78509d'

ответ

0

Судя по вашему запросу, updateAll не распознает $key в виде строки. Либо добавьте его как таковой, либо добавьте персонажей '. Пример:

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

Это ошибка SQL.

Теперь

"That said, Im not sure Im updating these records correctly."

... Ну, что вы хотите сделать? Чтение вашего кода. Вы получаете массив идентификаторов политики и обновляете все Declinations с помощью coverage_id <= $coverageId, что не имеет большого смысла, поскольку этот foreach обновляет policy_id для этого же условия, поэтому в конце вы будете воспринимать последнее изменение : last policy_id из foreach на каждом Склоне с помощью cover_id равно или меньше $coverage_id .... Не имеет для меня никакого смысла, даже не зная, что вам нужно делать.

+0

$ key - это индексированный массив. Я пытался пропустить этот массив и сохранить идентификатор для каждого экземпляра. Я собираюсь вернуться и обновить свой код. Тем не менее, спасибо Нансер! Ты всегда хочешь и даешь мне направление! Я очень ценю это! – SkillSet

+0

@SkillSet, без проблем :). '$ key' - это индексированный массив, но вы нигде не используете индекс, а индекс - это числовое, которое не имеет ничего общего с простым взглядом, это путает. Если вы не измените условия обновления, то этот foreach будет только перезаписываться в каждом цикле. Если вы дадите нам больше информации и что вы хотите сделать, возможно, мы сможем вам помочь. – Nunser

+0

Я хочу обновить все Declinations.Policy_Id, у которых есть тот же CoverageId, который передается. – SkillSet

0

Основываясь на SQL и предполагая, что вы используете ORM, мне кажется, что policy_id определяется как числовое поле в вашей модели Declination, когда она действительно должна быть строкой. Поле Coverage_id работает правильно, поэтому сравните два определения.