$Model->Save

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,

			

		));

	}

desde ya muchas gracias por su tiempo

saludos

"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.

noo noo la clave primaria de clientes es entidad_id, no me tira ningun error unicamente no me cambia el estado a activo

Mira si en tu modelo ese campo esta en las rules, si no lo esta no se considera safe y por lo tanto no se modifica.

sii esta en rules.




$pro_stk=$_POST['producto_stk_id']; 				$stock=ProductoStk::model()->findByPk($pro_stk); 				$stock->estado="EN COMODATO"; 				

$stock->save();

en ese codigo me tira error el stock->save();

yo defino stock como stock=new ProductoStk;

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.

Solo por seguir todo el proceso:




$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.

Saludos