AutoComplete de tabla relacionada

Tengo un autocomplete que me funciona bien, pero el problema es que cuando guardo el registro, me dice que el dato tiene que ser un integer… "CLARO! tonto el formulario esta esperando un identificador de tipo integer que relacione la tabla tbl_evento con tbl_estructura. un dropdownlist quedaria demasiado grande, son muchos registros. =) entonces… como hago? aqui lo que tengo

Las tablas


tbl_evento                    tbl_estructura

id                            id

idestructura                  denominacion

numbredeevento

mi controller




public function actions()

	{

		return array(

				'aclist'=>array(

						'class'=>'application.extension.EAutoCompleteAction',

						'model'=>'TblEstructura', //My model's class name

						'attribute'=>'denominacion', //The attribute of the model i will search

				),

		);

	}



mi _form




<?php echo $form->labelEx($model,'idestructura'); ?>

		<?php

		$this->widget('zii.widgets.jui.CJuiAutoComplete', array(

				'attribute'=>'idestructura',

				'model'=>$model,

				'sourceUrl'=>array('TblAsistencia/aclist'),

				'name'=>'my_input_name',

				'options'=>array(

						'minLength'=>'3',

				),

				'htmlOptions'=>array(

						'size'=>45,

						'maxlength'=>45,

						'style'=>"width:60%",

				),

		  ));

		?>

	

		

		

		<?php echo $form->error($model,'idestructura'); ?>



en extension/EAutoCompleteAction.php




<?php

class EAutoCompleteAction extends CAction

{

    public $model;

    public $attribute;

    private $results = array();

 

    public function run()

    {

        if(isset($this->model) && isset($this->attribute)) {

            $criteria = new CDbCriteria();

            $criteria->compare($this->attribute, $_GET['term'], true);

            $model = new $this->model;

            foreach($model->findAll($criteria) as $m)

            {

                $this->results[] = $m->{$this->attribute};

            }

 

        }

        echo CJSON::encode($this->results);

    }

}

?>  



la cuestion es que debe haber alguna manera de que en el formulario guarde en ($model, ‘idestructura’) el idestructura que esta autocompletano no?

Todo era cuestion de verlo desde otro punto de vista. . . aqui como lo hice por si alguien lo necesita

_form




<?php

			if ($model->idestructura	!='')

				{

					$value=$model->idestructura0->denominacion;

				}

			else {

					$value='';

				}

			echo $form->hiddenField($model, 'idestructura');

			$this->widget('zii.widgets.jui.CJuiAutoComplete', array(

					'name'=>'idestructura',

					'model'=>$model,

					'value'=>$value,

					'sourceUrl'=>$this->createUrl('ListarOrganosEntes'),

					'htmlOptions'=>array(

								'size'=>45,

								'maxlength'=>45,

								'style'=>"width:45%"),

					'options'=>array(

							'minLength'=>'3',

							'showAnim'=>'fold',

							'select' => 'js:function(event, ui)

										{ jQuery("#TblAsistencia_idestructura").val(ui.item["id"]); }',

											'search'=> 'js:function(event, ui)

										{ jQuery("#TblAsistencia_idestructura").val(0); }'

							),

					

				));

		?>



controller




public function actionListarOrganosEntes($term) {

		

		$criteria = new CDbCriteria;

		$criteria->condition = "LOWER(denominacion) like LOWER(:term)";

		$criteria->params = array(':term'=> '%'.$_GET['term'].'%');

		$criteria->limit = 30;

		$data = TblEstructura::model()->findAll($criteria);

		$arr = array();

		foreach ($data as $item) {

			$arr[] = array(

					'id' => $item->id,

					'value' => $item->denominacion,

					'label' => $item->denominacion,

			);

		}

		echo CJSON::encode($arr);

	}