У меня есть флажок с именем required, где при щелчке по галочке его значение равно 1, в противном случае его значение равно 0. Значение передается из файла представления в контроллер. Файл модели получает значение от контроллера, но значение не сохраняется.Проблема при сохранении значения в базе данных (cakePHP)
Я повторил требуемое значение в модели, чтобы проверить, получено ли это значение. Значение отражается как 1. Но в базе данных он не обновляется.
Это мой код:
function updateFieldEntries($data)
{
$this->data['Attribute']['id']=$this->Attribute->find('all', array(
'fields' => array('Attribute.id'),
'order' => 'Attribute.id DESC'));
$this->data['Attribute']['id']=$this->data['Attribute']['id'][0]['Attribute']['id'];
$this->data['Attribute']['form_id'] = $this->find('all', array(
'fields' => array('Form.id'),
'order' => 'Form.id DESC'));
$this->data['Attribute']['form_id']=$this->data['Attribute']['form_id'][0]['Form']['id'];
$this->data['Attribute']['instructions']=$data['Attribute']['instructions'];
$this->data['Attribute']['required']=$data['Attribute']['required'];
echo " required model ".$this->data['Attribute']['required'];
$this->data['Attribute']['sequence_no'] =$this->Attribute->find('all', array(
'conditions' => array('Attribute.form_id' =>$this->data['Attribute']['form_id']),
'fields' => array('Attribute.sequence_no'),
'order' => 'Attribute.sequence_no DESC'));
$this->data['Attribute']['sequence_no']=$this->data['Attribute']['sequence_no'][0]['Attribute']['sequence_no'];
if($data['Attribute']['name']== ''){
$this->data['Attribute']['label']=$this->Attribute->find('all', array(
'conditions' => array('Attribute.id' =>$this->data['Attribute']['id']),
'fields' => array('Attribute.label') ));
$this->data['Attribute']['label']=$this->data['Attribute']['label'][0]['Attribute']['label'];
}
else{
$this->data['Attribute']['label']= $data['Attribute']['name'];
}
if($data['Attribute']['size']== ''){
$this->data['Attribute']['size']=$this->Attribute->find('all', array(
'conditions' => array('Attribute.id' =>$this->data['Attribute']['id']),
'fields' => array('Attribute.size') ));
$this->data['Attribute']['size']=$this->data['Attribute']['size'][0]['Attribute']['size'];
}
else{
$this->data['Attribute']['size']= $data['Attribute']['size'];
}
if($data['Attribute']['instructions']== ''){
$this->data['Attribute']['instructions']=$this->Attribute->find('all', array(
'conditions' => array('Attribute.id' =>$this->data['Attribute']['id']),
'fields' => array('Attribute.instructions') ));
$this->data['Attribute']['instructions']=$this->data['Attribute']['instructions'][0]['Attribute']['instructions'];
}
$this->Attribute->save($this->data);
}
EDIT
Я также проверил, если только и требуемое значение сохраняются при помощи параметра saveField.
$this->Attribute->saveField('required',$this->data['Attribute']['required']);
Значение 1 хранится в отдельной строке таблицы для этого конкретного атрибута. Так в чем проблема, почему она не сохраняется вместе с другими значениями.
EDIT
Если я сохранить целое значение непосредственно, как
$this->data['Attribute']['required']='7';
она сохраняется в базе данных. Как?? В чем проблема тогда?
Сохранены ли какие-либо другие значения? Или это просто «требуется»? –
Все остальные значения сохранены правильно, так как имя, размер обновлены правильно. Только требуемое значение не сохраняется. Я добавил это свойство в последнее время. Раньше у меня было только имя, размер, инструкции и последовательность нет – Angeline
Не было ли это разрешено с вашим предыдущим вопросом? http://stackoverflow.com/questions/1030639/problem-in-storing-value-in-database –