Cómo guardar una parte de los campos de un modelo

Hola buen día, tengo la siguiente tabla. La llave primaria es id_proyecto e id_anio

proyecto_t_anio

id_proyecto

id_anio

campo1

campo2

campo3

campo4

Cree un modelo para esta tabla.

Ahora, tengo diseñado, dos pantallas, una que se encarga de llenar los campos 1 y 2 y otra pantalla que llena los campos 3 y 4.

Las preguntas que tengo son:

1.- Cómo le hago para que al presionar el botón de la pantalla 1, se haga insert o update, sólo de los campos 1 y 2, y lo mismo con la pantalla 2, si el registro existe que actualice los campos 3 y 4, sino existe que haga insert sólo de los campos 3 y 4.

2.- De qué manera puedo hacer la validación para determinar si existe o no registro en la tabla, para un id_proyecto e id_anio determinados

Saludos y gracias de antemano.

Ya lo resolví, aqui pongo el código, hay un par de variables que tienen datos fijos, apenas concluya un amigo su pantalla, los quito, ya que los recibiría como parámetros.




<?php

class RecursosController extends Controller

{


	/**

	 * This is the default 'index' action that is invoked

	 * when an action is not explicitly requested by users.

	 */

	public function actionIndex()

	{

		$idProyecto  =$_POST['id_proyecto'];

		$idAnio      =$_POST['id_anio'];

		

		$idProyecto = 1;

		$idAnio     = 1;


        //Instancia del formulario

		//$model=new AprobacionSubcomite();

		$model =  new ProyectoAnio();

		

		//Verificacion que determina si el usuario presiono el boton de guardar

		if(isset($_POST['ProyectoAnio'])){ //Presiono el boton

		   	

		   //Asignacion de los valores al modelo	

		   $model->attributes=$_POST['ProyectoAnio'];

		   		   

		   //Guardado de los datos

	       $this->validarOperacion($idProyecto, $idAnio,$model);   		

		}

		

							

		$this->render('index',array("listadoSubcomite"=>$this->cargarListadoSubcomite('Subcomite','id_subcomite','nombre'),

		                            "model"=>$model,

		                            "id_proyecto"=>$idProyecto,

		                            "id_anio"=>$idAnio,

		                            "listadoTipoSesion"=>$this->cargarListadoSubcomite('TipoSesion','id_tipo','nombre'),

		                            "listadoNumSesion"=>$this->cargarListadoSubcomite('NumeroSesion','id_numero','nombre')));

    }

    

    private function cargarListadoSubcomite($modelo,$campoId,$campoDescripcion){

    	return CHtml::listData($modelo::model()->findAll(),$campoId,$campoDescripcion);

    }

    

    private function validarOperacion($idProyecto,$idAnio,$model){

    	

       if($model->validate()){

       	  

    	  $registro = ProyectoAnio::model()->findByAttributes(array("id_proyecto"=>$idProyecto,

                                                                 "id_anio"=>$idAnio));


          if($registro===null){

       	     $this->insertAction($model);

          }

          else{

       	     $this->updateAction($registro,$model);

          }                 	  

       }	       

    }


    public function updateAction($registro,$model){

       $registro->attributes=array('id_subcomite'=>$model->id_subcomite,

                                        'id_tipo_sesion'=>$model->id_tipo_sesion,

                                        'id_numero_sesion'=>$model->id_numero_sesion,

                                        'minuta'=>$model->minuta,

                                        'ruta_minuta'=>$model->ruta_minuta);

       $registro->save();           	    	

    }

    

    public function insertAction($model){

    	$model->save();

    }

    

	/**

	 * This is the action to handle external exceptions.

	 */

	

	public function actionError(){

	    if($error=Yii::app()->errorHandler->error)

	    {

	    	if(Yii::app()->request->isAjaxRequest)

	    		echo $error['message'];

	    	else

	        	$this->render('error', $error);

	    }

	}

	

	

}



Si se puede mejorar el código, adelante, son bienvenidas las sugerencias.

Saludos