BUENAS TARDES! TENGO UN PROBLEMITA, EL TEMA ES EL SIGUIENTE: TENGO QUE ACUTALIZAR EL ESTADO DE UNA TABLA DE LA BASE DE DATOS, ES DECIR QUE SI MI ESTADO ES PENDIENTE LO TENGO QUE CAMBIAR A ACTIVO, PARA ELLOS TRABAJO CON DOS TABLAS UNA DE CLIENTES Y UNA DE ESTADO DE CLIENTES POR ENDE TENGO
*CLIENTE:
ID
ESTADO_ID
*ESTADO
ID
DESCRIPCIÓN
YO CREO QUE NO ME DEJA ACTUALIZAR EL CAMPO ESTADO_ID DE LA TABLA CLIENTES PORQUE ESTA RELACIONADA CON LA TABLA ESTADO, PERO ES UNA SUPOSICIÓN.
LES DEJO MI CONTROLLER PARA QUE VEAN DONDE ESTA EL ERROR O SUGIERAN COMO LO PUEDO HACER
public function actionCreate($id)
{
$model=new Contrato;
$data=new ContratoServicio;
//ACA ES DONDE BUSCO EL ID DEL CLIENTE PARA ACTUALIZAR SU ESTADO,
//TAMBIEN PROBE CON ByPk()
$consulta=Cliente::model()->findByAttributes(array('entidad_id'=>$id));
$id_entidad=$consulta->entidad_id;
$model->cliente_id=$id_entidad;
$consulta->estado_id=1;
$consulta->save();
$model->duracion=0;
$model->proceso_id=0;
if(isset($_POST['Contrato'], $_POST['ContratoServicio']))
{
$model->attributes=$_POST['Contrato'];
$data->attributes=$_POST['ContratoServicio'];
if($model->save()){
$data->descripcion=$data->servicio_id;
$data->contrato_id=$model->id;
$data->importe=$model->importe;
$data->save();
$this->redirect(array('acceso/create','id'=>$data->id));
}
}
$this->render('create',array(
'model'=>$model,
'data'=>$data,
'cliente'=>$cliente,
));
}
"YO CREO QUE NO ME DEJA ACTUALIZAR EL CAMPO ESTADO_ID DE LA TABLA CLIENTES PORQUE ESTA RELACIONADA CON LA TABLA ESTADO, PERO ES UNA SUPOSICIÓN."
Si fuera por el foreign key te mostraria un error de tipo "Error 1452 - Cannot add or update child row", si no es asi entonces el problema es otro. Deberias dar mas datos, como que error de muestra, o si no hay errores, etc.
Tambien veo que utilizas como primary key del cliente el campo entidad_id cuando en las columnas de la tabla cliente tienes que el primary key es el campo id.
Y cuando hago echo $stock->estado me tira que esta "en comodato" y no "en stock" como esta en la base de datos, pero no me modifica en la base de datos.
$id_stock = 1; //pon un id válido, que exista en BBDD
$stock = ProductoStk::model()->findByPk($id_stock);
echo $stock->estado; //Comprueba el valor inicial
$stock->estado = "EN COMODATO"; //modifica el valor
if($stock->save()){
echo 'Cambiado Stock a '.$stock->estado; //Valor cambiado OK
} else {
//Valor no ha cambiado, que te muestre los errores de validación.
print_r($stock->getErrors());
}
Indica que falla en el esquema y si te muestra error cual es el error o que no hace nada.