Yii Framework Forum: Trabajar Con Tres Model En Un Controlador - Yii Framework Forum

Jump to content

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

Trabajar Con Tres Model En Un Controlador Rate Topic: -----

#1 User is offline   rafaelrosales 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 88
  • Joined: 02-October 13

Posted 02 October 2013 - 03:50 PM

Hola tengo tres tablas en mysql, relacionadas por el campo codprod, tengo una tabla productos y una tabla submayorprodctos y otra tabla datosproductos(Entradas), cuando entro una entrada para un producto me debe adicionar la cantidad de esa entrada al campo saldoactual de submayor, para eso hice esto en el controaldor de la tabla datosproductos:
public function actionCreate() lo puse aqui cuando creo una nueva entrada, o sea, cuando creo una nueva entrada y me lo hace bien, el problema es que cuando modifico esa entrada tambien debo ponerlo en la funcion update, pero no me lo hace ya que lo que hace es una nueva entrada, para ello puse esto:
Quiero que cuando modifique me permita modificar y modificar tambien el saldoactual en la tabla submayorprodctos. envio el controlador
0

#2 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 11-July 13

Posted 06 October 2013 - 04:06 PM

Hola, sin entender lo que quieres hacer (no tengo muchas ganas de leer :rolleyes: ) pero yo veo iguales las acciones create y update.
Yo creo que debes cambiar en update la 1º linea:

 $model=new Datosent; 


por:

 $model=$this->loadModel($id);

0

#3 User is offline   lagogz 

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

Posted 07 October 2013 - 08:32 AM

View Postrahif, on 06 October 2013 - 04:06 PM, said:

 $model=$this->loadModel($id);



+1
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

#4 User is offline   rafaelrosales 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 88
  • Joined: 02-October 13

Posted 07 October 2013 - 11:02 AM

En realidad lo que quiero es cuando haga una entrada en la tabla datosent la cantidad entrada adicionarlo a la tabla submayor en el campo saldoact, para ese hice lo siguiente:
 public function actionCreate()
            	{
              	$model=new Datosent;                      	
           	
                	if(isset($_POST['Datosent']))
                	{
                    	$model->attributes=$_POST['Datosent'];
                    	if($model->save()){   
										   $criteria=new CDbCriteria;                                    	
                                       	$criteria->condition='Codprod=:codigo';                                  	
                                       	$criteria->params=array(':codigo'=>$model->Codprod);
                                       	$objSubmp = Submayorprod::model()->find($criteria);
                                       	$objSubmp->SaldoAct = $objSubmp->SaldoAct + $model->Cantidad;
                                       	$objSubmp->save();
										   $this->redirect(array('view', 'id' => $model->Id));
                                      	}
                	} 
$this->render('create',array(
            	'model'=>$model
					));
            	}

Ademas cuando escoja un articulo de la tabla datosent para modificarlo por la cantidad ese nuevo valor modificado modificado sea el que se actualice, ejemplo: si escogi un articulo con cantidad 120 y lo voy a midificar por 100, entonces a la tabla submayor en el campo saldoact me reste 120-100=20, si ese mismo articulo de 120 lo modifico por 140, entonces a la tabla submayor en el campo saldoact me reste 140-120=40 para ello tengo ahora este codigo:
public function actionUpdate($id)
		{
             	$model=$this->loadModel($id);                   	
           	
                	if(isset($_POST['Datosent']))
                	{
                    	$model->attributes=$_POST['Datosent'];
						//$cantidadinicial = $model->Cantidad;
						//SaldoAct = salcdo actua;l - cantidad incial
                    	if($model->save()){   
										   $criteria=new CDbCriteria;                                    	
                                       	$criteria->condition='Codprod=:codigo';                                  	
                                       	$criteria->params=array(':codigo'=>$model->Codprod);
                                       	$objSubmp = Submayorprod::model()->find($criteria);
                                       	$objSubmp->SaldoAct = $objSubmp->SaldoAct + $model->Cantidad;
                                       	$objSubmp->save();
										   $this->redirect(array('view', 'id' => $model->Id));
                                      	}
										  
                	} 
 		$this->render('update',array(
			'model'=>$model
					));
    	}

Pero lo que hace es sumar la cantidad modificada al Saldoact de la tabla submayor
0

#5 User is offline   rahif 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 11-July 13

Posted 07 October 2013 - 12:37 PM

Creo que voy entendiendo el problema, eso espero.... prueba con esto:

public function actionUpdate($id)
                {
                $model=$this->loadModel($id);                           
                
                        if(isset($_POST['Datosent']))
                        {
                        $cantidad_inicial=$model->cantidad;
                        $model->attributes=$_POST['Datosent'];
                                                //$cantidadinicial = $model->Cantidad;
                                                //SaldoAct = salcdo actua;l - cantidad incial
                        if($model->save()){   
                                                                                   $criteria=new CDbCriteria;                                           
                                        $criteria->condition='Codprod=:codigo';                                         
                                        $criteria->params=array(':codigo'=>$model->Codprod);
                                        $objSubmp = Submayorprod::model()->find($criteria);
                                        $objSubmp->SaldoAct = $objSubmp->SaldoAct +$cantidad_inicial -  $model->Cantidad;
                                        $objSubmp->save();
                                                                                   $this->redirect(array('view', 'id' => $model->Id));
                                        }
                                                                                  
                        } 
                $this->render('update',array(
                        'model'=>$model
                                        ));
        }


Creo que es algo así, de todas maneras según dices:
un articulo con cantidad 120 y lo voy a midificar por 100 120-100=20
ese mismo articulo de 120 lo modifico por 140 140-120=40 ---> no seria 120-140=-20

Ojo con el signo, de prueba haz este ejemplo que has propuesto y modificalo según necesites.

Por otra parte la variable $id ponla igual en todos los sitios porque en el render aparece como $Id.

Para select sencillas yo suelo ponerlo todo en una fila, por ejemplo:
  $objSubmp=Submayorprod::model()->find('Codprod=:codigo',array(':codigo'=>$model->Codprod));


comenta si va a mejor o a peor ....
0

#6 User is offline   rafaelrosales 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 88
  • Joined: 02-October 13

Posted 08 October 2013 - 07:45 AM

Ok todo resuelto, pero tuve que cambiar

code]
$objSubmp->SaldoAct = $objSubmp->SaldoAct +$cantidad_inicial - $model->Cantidad;
[/code]

por
code]
$objSubmp->SaldoAct = $objSubmp->SaldoAct -$cantidad_inicial+ $model->Cantidad;
[/code
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