У меня есть флажок с именем обязательно, где, если флажок установлен, его значение равно 1, в противном случае его 0.
Значение правильно передается из файла представления в контроллер. Файл модели получает значение из контроллера, но значение не сохраняется.
Я повторил требуемое значение в модели, чтобы проверить, получено ли значение. Значение отображается как 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';
хранится в базе данных. Как?? В чем проблема то ?? 1024 *