Problema al actualizar multiples datos

Buenas tardes comunidad Yii,

Mi consulta es basicamente que no he podido actualizar los datos de un modelo, que guarda muchas veces en si mismo, para q comprendan un pcoo mejor adjunto la vista y el action


<?php foreach ($publicacion as $key => $value):

<?php //echo $form->labelEx($model,"[$key]tipopublicacion_idtipopublicacion"); ?>

		<?php echo $form->textField($model,"tipopublicacion_idtipopublicacion",array('style'=>'width:100px', 'name'=>"public$value", 'value'=>$value)); ?>

		<?php echo $form->error($model,"tipopublicacion_idtipopublicacion"); ?>

		<?php //echo $model->idcmvtoini; ?>

		</td>


		<td>

		<?php //echo $form->labelEx($model,"[$key]lunes"); ?>

		<?php echo $form->textField($model,"lunes",array('style'=>'width:40px;', 'name'=>"lunes$value", 'value'=>$movIni[$control]['lunes'])); 

			  //echo $model->idcmvtoini;	?>

		<?php echo $form->error($model,"lunes"); ?>

		</td>


		<td>

		<?php //echo $form->labelEx($model,"[$key]martes"); ?>

		<?php echo $form->textField($model,"martes",array('style'=>'width:40px;', 'name'=>"martes$value", 'value'=>$movIni[$control]['martes'])); 

		//echo $model->idcmvtoini+1; ?>

		<?php echo $form->error($model,"martes"); ?>



basicamente esta es mi vista y el action que no me funciona:




public function actionUpdate($id)

	{

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

		$idcliente = $model->cliente_idcliente; 		

		$this->performAjaxValidation($model);

		$publicacion = $model->getPublicaciones();

   		//$control=1;

		if(isset($_POST['cli']) && isset($_POST['tipocli']))

		{

			foreach ($publicacion as $key => $value):				


				$model->cliente_idcliente=$_POST['cli'];

				$model->tipocliente_idtipocliente=$_POST['tipocli'];


				

				$model->tipopublicacion_idtipopublicacion=$_POST["public$value"];

				$model->lunes=$_POST["lunes$value"];

				$model->martes=$_POST["martes$value"];

				$model->miercoles=$_POST["miercoles$value"];

				$model->jueves=$_POST["jueves$value"];

				$model->viernes=$_POST["viernes$value"];

				$model->sabado=$_POST["sabado$value"];

				$model->domingo=$_POST["domingo$value"];

				$model->festivo=$_POST["festivo$value"];


				$model->save($id);

				echo $id= $id+1;

				

			endforeach;	


			

			if($model->save())

				$this->redirect(array('view','id'=>$model->idcmvtoini));

		}


		$this->render('update',array(

			'model'=>$model,

			

		));

	}

 

El problema es que solo me actualiza el ultimo registro y el resto de campos no.

Muchas Gracias por la atención y quedo atento

Buenas.

Creo q tu problema es q estás usando siempre el mismo modelo.

Te está actualizando todos los registros, pero siempre sobre el mismo, por lo que va haciendo todas las actualizaciones, y como vas actualizando sobre lo actualizado, al final sólo te queda la última actualización.

Yo probaría cambiando lo siguiente:




...

foreach ($publicacion as $key => $value):                               

{

     $model=$this->loadModel($_POST['cli']);

     //$model->cliente_idcliente=$_POST['cli'];

     $model->tipocliente_idtipocliente=$_POST['tipocli'];


...



Un saludo.

Gracias por contestar lagogz, me tocó implementarlo de otra manera. aquí la dejo por si alguien le sirve.


for ($i=1; $i<$publiCliente+1; $i++){	

			

			if(isset($_POST['cli']) && isset($_POST['tipocli']))

			{

					$llave = $publicacionesCliente[$i]['idcmvtoini'];

					$value = $publicacionesCliente[$i]['tipopublicacion_idtipopublicacion'];

					

					


				if($i<=$numPublic ){

					


					$model->updateByPk($llave, array(

					'cliente_idcliente'=>$_POST['cli'],

					'tipocliente_idtipocliente'=>$_POST['tipocli'],


					

					'tipopublicacion_idtipopublicacion'=>$_POST["public$value"],

					'lunes'=>$_POST["lunes$value"],

					'martes'=>$_POST["martes$value"],

					'miercoles'=>$_POST["miercoles$value"],

					'jueves'=>$_POST["jueves$value"],

					'viernes'=>$_POST["viernes$value"],

					'sabado'=>$_POST["sabado$value"],

					'domingo'=>$_POST["domingo$value"],

					'festivo'=>$_POST["festivo$value"],

					));


$model->save();

}

}

}

Bien, pero te sobra el último $model->save();

updateByPk() ya te actualiza el registro en la base de datos.

Un saludo.