Mi pregunta es para actualizar 2 o mas tablas desde el modulo de actualización porque ya lo hice insertando en 2 modelos (Tablas), en el modulo de inserción y también visualizo la información si hay datos a partir de las relaciones, pero puntualmente quiero mostrar los datos de la segunda tabla y su vez actualizar la información de la segunda tabla desde el modulo de actualización.
/*
En el método Create (actionCreate) ya estoy haciendo la insercion en las 2 tablas (Tabla1, Tabla2).
*/
public function actionCreate() {
$model=new Tabla1;
if(isset($_POST['Tabla1']))
{
$model->attributes=$_POST['Tabla1'];
if($model->save()){
$modelTabla2 = new Tabla2;
$modelTabla2->attributes = $_POST['Tabla2'];
$modelTabla2->tabla1_id = $model->id;
if ($modelTabla2->save())
$this->redirect(array('view', 'id' => $model->id));
#$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('create',array(
'model'=>$model,
));
}
/*
[b]Mi pregunta es como mostrar la información de la Tabla2 en el formulario (Actualización)
y en el metodo update (actionUpdate($id)) hacer la actualización de las 2 tablas: Tabla1, Tabla2.[/b]
*/
Buenas nuevas foro, habemus un avance Rodrigo, ya actualiza la información en el tabla2, aunque aun no me muestra la información en el formulario a editar (Como hago para mostrar los datos en la tabla2), el error era:
#Clase Tabla1Controller extends Controller -> Metodo update
public function actionUpdate($id){
$modelTabla2 = new Tabla2; #Se creo instancia de la Tabla2
$model=$this->loadModel($id);
$modelTabla2=Tabla2::model()->find('tabla1_id=?',array($id));
if(isset($_POST['Tabla1'])){
$model->attributes=$_POST['Tabla1'];
if($model->save()){
if(isset($_POST['Tabla2']))
$modelTabla2->attributes=$_POST['Tabla2'];
$modelTabla2->tabla1_id = $model->id; #Se envia el id de Tabla1
if($modelTabla2->save())
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('update',array(
'model'=>$model,
'modelTabla2'=$modelTabla2,
));
}
A continuación voy a explicar como solucione la actualización en las 2 o mas tablas:
La relación que existe entre tabla1 y tabla2 es uno a uno. Por esa razón no era aplicable la solución expuesta en la ultima replica, como tampoco fue aplicable el la extension multimodelform, la cual tambien estudie.
Controller
public function actionUpdate($id){
$modelTabla2 = new Tabla2; #Se creo instancia de la Tabla2
$model=$this->loadModel($id);
$modelTabla2=Tabla2::model()->find('tabla1_id=?',array($id));
if(isset($_POST['Tabla1'])){
$model->attributes=$_POST['Tabla1'];
if($model->save()){
if(isset($_POST['Tabla2']))
$modelTabla2->attributes=$_POST['Tabla2'];
$modelTabla2->tabla1_id = $model->id; #Se envia el id de Tabla1
if($modelTabla2->save())
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('update',array(
'model'=>$model,
'modelTabla2'=$modelTabla2,
));
}