Yii Framework Forum: Actualizar 2 Tablas Desde El Modulo De Actualizacion - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Actualizar 2 Tablas Desde El Modulo De Actualizacion Rate Topic: ***-- 1 Votes

#1 User is offline   uraptor 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 21-June 12
  • Location:Bogota-Colombia

Posted 08 April 2013 - 12:22 PM

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.

This post has been edited by uraptor: 08 April 2013 - 12:39 PM

0

#2 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 30-July 09
  • Location:Colombia

Posted 08 April 2013 - 12:44 PM

¿Podría por favor colocar datos de ejemplo para ser más explícitos y comprender lo que desea?
Creo que no he comprendido la pregunta :(

Saludos.
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#3 User is offline   uraptor 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 21-June 12
  • Location:Bogota-Colombia

Posted 09 April 2013 - 08:41 AM

# Clase Controller Tabla1
class Tabla1Controller extends Controller {

/*
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,
));
}

/*
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.

*/
#Asi pienso que es pero no funciona.
public function actionUpdate($id)
{
$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'];
if($modelTabla2->save())
$this->redirect(array('view','id'=>$model->id));
}
}

$this->render('update',array(
'model'=>$model,
'modelTabla2'=$modelTabla2,
));
}

}
0

#4 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 30-July 09
  • Location:Colombia

Posted 10 April 2013 - 11:05 AM

Luce bien, podría publicar la vista?
Pregunto: está saliendo algún error? o simplemente no muestra los datos?
Actualmente se están almacenando los datos correctamente (aunque no se muestren)
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#5 User is offline   uraptor 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 21-June 12
  • Location:Bogota-Colombia

Posted 10 April 2013 - 03:27 PM

Gracias por tu interés Ricardo, actualmente en el modulo de Actualización:

No esta presentando error.

Pero no esta mostrando los datos.

Tampoco se esta almacenando (no actualiza los datos en la Tabla2).

Mas tarde publico la vista.
0

#6 User is offline   uraptor 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 21-June 12
  • Location:Bogota-Colombia

Posted 11 April 2013 - 04:34 AM

//Vista
<?php
$this->breadcrumbs=array(
	'Tabla1'=>array('index'),
	$model->id=>array('view','id'=>$model->id),
	'Update',
);

$this->menu=array(
	array('label'=>'List Tabla1','url'=>array('index')),
	array('label'=>'Create Tabla1','url'=>array('create')),
	array('label'=>'View Tabla1','url'=>array('view','id'=>$model->id)),
	array('label'=>'Manage Tabla1','url'=>array('admin')),
);
?>

<h1>Update Tabla1 <?php echo $model->id; ?></h1>

<?php echo $this->renderPartial('_form',array('model'=>$model),array('modelTabla2'=>$modelTabla2)); ?>

0

#7 User is offline   lagogz 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 30-November 12
  • Location:Galiza

Posted 11 April 2013 - 08:27 AM

Si no te da error, supongo que será por las reglas.

Para el save de la Tabla 2 haz:

if(!$modelTabla2->save())
{
 var_dump($modelTabla2->getErros());
 exit;
}


A ver que te muestra.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

#8 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 30-July 09
  • Location:Colombia

Posted 11 April 2013 - 11:00 AM

Se me ocurre agregar en la vista "_form" las siguientes líneas:
echo CHtml::errorSummary($model);
echo CHtml::errorSummary($modelTabla2);


Así podemos saber si e está produciendo un error en el guardado.
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#9 User is offline   uraptor 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 21-June 12
  • Location:Bogota-Colombia

Posted 12 April 2013 - 06:21 AM

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,
	));
}

0

#10 User is offline   bluyell 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 222
  • Joined: 28-October 11

Posted 12 April 2013 - 09:53 PM

creo que se refiere a que automaticamente le sea generado un mecanismo maestro detalle.
si este es el caso, aqui podrias conseguir parte de la ayuda:
http://www.yiiframew...os&modulo=demo1
0

#11 User is offline   uraptor 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 21-June 12
  • Location:Bogota-Colombia

Posted 29 April 2013 - 08:34 PM

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,
        ));
}


Update

<?php echo $this->renderPartial('_form',array('model'=>$model,'modeltabla2'=>$modeltabla2)); ?>

Dependediendo de los campos que quieras crear/actualizar de la tabla2
Form

<?php echo $form->textFieldRow($model->isNewRecord ? tabla2::model() : $modeltabla2,'campo1',array('class'=>'span5','maxlength'=>200)); ?>

<?php echo $form->textFieldRow($model->isNewRecord ? tabla2::model() : $modeltabla2,'campo2',array('class'=>'span5','maxlength'=>100)); ?>


Cabe aclarar que este formulario fue creado con el modulo bootstrap para yii.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users