ActiveRecord is not saving a value on update action.
The field not being saved is ‘id_empresa’ and is a foreign key of ‘Empleado’ model. This is my code:
Model (Empleado):
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('estado, primer_nombre, primer_apellido, foto_bool, sex', 'required'),
array('estado', 'numerical', 'integerOnly'=>true),
array('primer_nombre, segundo_nombre, tercer_nombre, primer_apellido, segundo_apellido, casada_apellido, codigo, identificacion', 'length', 'max'=>256),
array('foto_bool', 'length', 'max'=>5),
array('sex', 'length', 'max'=>1),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id_empleado, estado, primer_nombre, segundo_nombre, tercer_nombre, primer_apellido, segundo_apellido, casada_apellido, foto_bool, foto, sex, codigo, identificacion', 'safe', 'on'=>'search'),
);
}
Controller:
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Empleado']))
{
$model->attributes=$_POST['Empleado'];
if($model->save())
$this->redirect(array('view','id'=>$model->id_empleado));
}
$this->render('update',array(
'model'=>$model,
));
}
Form (relevant part only):
[html] <div class="row">
<?php echo $form->labelEx($model,'empresa'); ?>
<?php echo $form->dropDownList($model,'id_empresa', CHtml::listData(Empresa::model()->findAll(), 'id_empresa', 'nombre_empresa')); ?>
<?php echo $form->error($model,'empresa'); ?>
</div> [/html]
But when I make theese changes to the Model then it works:
- array('estado, primer_nombre, primer_apellido, foto_bool, sex', 'required'),
+ array('estado, primer_nombre, primer_apellido, foto_bool, sex, id_empresa', 'required'),
- array('id_empleado, estado, primer_nombre, segundo_nombre, tercer_nombre, primer_apellido, segundo_apellido, casada_apellido, foto_bool, foto, sex, codigo, identificacion', 'safe', 'on'=>'search'),
+ array('id_empleado, estado, primer_nombre, segundo_nombre, tercer_nombre, primer_apellido, segundo_apellido, casada_apellido, foto_bool, foto, sex, codigo, identificacion, id_empresa', 'safe', 'on'=>'search'),
WHY?!?!