tengo dos modelos personas y direcciones, usando el modelo de personas y con un form guardo en un modelo los datos de las personas y en otro las direcciones postales. Teniendo en cuenta que una persona puede tener más de un tipo de direccion postal, desde personas doy de alta los datos de la persona y su direccion postal principal
el problema lo tengo a la hora de hacer el update ya que no logro obtener el id_direc de la dirección de forma correcta para que se muestre unitariamente con la parte de personas dentro del mismo formulario.
tabla personas
id_personas (PK)
nombre
apellidos
… etc…
tabla direcciones
id_direc (pk)
id_persona (fk)
tipo direccion… etc…
os paso el controlador del update, donde intento buscar en el modelo de direcciones el id_direc y su direccion definida como principal en el tipo_direc =1.
public $persona;
public $tdire;
public function actionUpdate($id)
{
$model= new TbPersonas;
$model_direccion = new TbDirecciones;
$model=$this->loadModel($id);
$persona = $model->ID_PERSONA;
$tdire = 1;
$connection=Yii::app()->db;
$sql='Select ID_DIREC
FROM tb_direcciones
WHERE ID_PERSONA = :ID_PERSONA
AND TIPO_DIREC = :TIPO_DIREC';
$command=$connection->createCommand($sql);
$command->bindParam(':ID_PERSONA',$persona,PDO::PARAM_INT);
$command->bindParam(':TIPO_DIREC',$tdire,PDO::PARAM_INT);
$command->execute();
$model_direccion = TbDirecciones :: model()-> find($sql);
var_dump($model_direccion, $persona, $tdire);
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation(array($model,$model_direccion));
if(isset($_POST['TbPersonas'],$_POST['TbDirecciones']))
{
$model->attributes=$_POST['TbPersonas'];
$model_direccion->attributes=$_POST['TbDirecciones'];
$model_direccion->ID_PERSONA = $model->ID_PERSONA;
$model_direccion->setIsNewRecord(false);
if($model->save() && $model_direccion->update())
$this->redirect(array('view','id'=>$model->ID_PERSONA));
}
$this->render('update',array(
'model'=>$model,
'model_direccion'=>$model_direccion,
));
}
Al ejecutar me muestra este error:
CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined. The SQL statement executed was: Select ID_DIREC
Para poner el post como solucionado, dirigete a el primer aporte que hiciste en el post y dale editar, al hacer esto podras editar el post inicial, pero selecciona usar Full Editor, este te permite poner solucionado en el titulo del post