Quantcast
Channel: Yii Framework Forum
Viewing all articles
Browse latest Browse all 18717

Guardar Datos Multiples

$
0
0
bnas todos, tengo el siguiente problema que no he entendido como resolverlo.
tngo en mi accion create un guardado a diferentes modelos.
public function actionCreate()
	{
		
		$model=new Buzon();
		$model2=new Anexo();
		$model3=new Destino();

		$UsuInterno=UsuInterno::model()->findByPk(Yii::app()->user->id);
		$dependencia=$UsuInterno->dependencia;
		
		$User=UsuInterno::model()->findByPk(Yii::app()->user->id);
		$usuinterno=$User->usuint_nombre;
		

		$vid = Yii::app()->db->createCommand('SELECT max(id) FROM buzon')->queryScalar();
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		$this->performAjaxValidation(array($model,$model2,$model3));
		if(isset($_POST['Buzon'], $_POST['Anexo'],$_POST['Destino']))
		{
			$model->attributes=$_POST['Buzon'];
			$model2->attributes=$_POST['Anexo'];
			$model3->attributes=$_POST['Destino'];
			
			$model->buz_fechacrea = new CDbExpression('NOW()');
			$model->buz_fechaven = strtotime('today + '. $model->plantilla->plant_diasmax . ' days');
		
			$model2->ane_rutaarchivo=CUploadedFile::getInstance($model2,'ane_rutaarchivo');
			$model2->buzon_id=$vid+1;

                        $model3->usuario_interno_id="usuario_interno_id";
			
			$model->usuinterno_id=Yii::app()->user->id;
			
			if($model2->save() && $model->save()){
				
				$model2->ane_rutaarchivo->saveAs(Yii::getPathOfAlias('webroot').'/protected/images/'.$model2->ane_rutaarchivo);
				
				$this->redirect(array('view','id'=>$model->id));
		
			}
		}
		$this->render('create',array(
			'model'=>$model,
			'model2'=>$model2,
			'model3'=>$model3,
			'dependencia'=>$dependencia,
			'usuinterno'=>$usuinterno,
		));
	}


esta es la relacion.

public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(

		'anexos'=>array(self::HAS_MANY,'Anexo','buzon_id'),
		'destinos'=>array(self::MANY_MANY,'Destino','destino(buzon_id, usuario_interno_id)','together'=>true),

		);
	}


la primera relacion me funciona muy bn!! la de model2 pero a la hora de hacer lo mismo con otra relacion model3, de MANY_MANY, donde es la tabla buzon, una nueva tabla destino y una usuario_interno donde la tabla destino es el resultado de la relacion entre buzon y usuario_interno.

buzon: id, buz_tipo, etc
destino: buzon_id, usuario_interno_id.
usuario_interno: id, nombre, etc

en el form tengo lo siguiente:


<div class="form">
<p  align="center" ><?php echo CHtml::image(Yii::app()->theme->baseUrl."/images/footer.png");
?><br><?php 
echo date("d-m-Y");
?><br><?php  
echo CHtml::encode($dependencia->dep_nombre) ;

?></center></p>

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'buzon-form',
	'enableAjaxValidation'=>false,
	'htmlOptions' => array('enctype'=>'multipart/form-data'),
)); ?>

<p class="note">Columnas con <span class="required">*</span> son requeridas.</p>

<?php echo $form->errorSummary(array($model,$model2,$model3)); ?>

/.../

<div class="row">
		<?php echo $form->labelEx($model3,'usuario_interno_id'); ?>
		<?php echo $form->checkBoxList($model3,'usuario_interno_id',CHtml::listData(UsuInterno::model()->findAll(),'id','usuint_nombre'),array('empty'=>'Seleccione un nombre')); ?>
		<?php echo $form->error($model3,'usuario_interno_id'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'alerta'); ?>
		<?php echo $form->textField($model,'buz_alerta'); ?>
		<?php echo $form->error($model,'buz_alerta'); ?>
	</div>
	
	<div class="row">
		<?php echo $form->labelEx($model2,'Anexo'); ?>
		<?php echo $form->fileField($model2,'ane_rutaarchivo'); ?>
		<?php echo $form->error($model2,'ane_rutaarchivo'); ?>
	</div>

	<div class="row buttons">
		<?php echo CHtml::submitButton($model->isNewRecord ? 'Crear' : 'Guardar'); ?>
	</div>

<?php $this->endWidget(); ?>
<p  align="center" ><?php echo CHtml::image(Yii::app()->theme->baseUrl."/images/header.png");?></center></p>
</div>


mi pregunta es como hago para guardar el $model3, sabiendo que tiene multiples registros. Estuve buscando pero la vdd nunca explican muy bn como hacerlo que con un while o un for pero no se como hacerlo en el controller, no entiendo.

y en el save se haria igual? siemplemente poner: if($model3->save() && $model2->save() && $model->save()){

lo intente implementando esto pero no me da.
$model3->usuario_interno_id=implode(',',$model3->usuario_interno_id);

la idea es que en la tabla destino queden guardados los usuarios a los q se envia el buzon por ejemplo a los usuarios con id 1,2,3 les pertenece el buzon 1

destino
buzon_id usuario_interno_id
1------------>1
1------------>2
1------------>3

se supone que debe quedar guardado asi!

Agradecería mucho la ayuda :D

modelo E/R:

Posted Image[/php]

Viewing all articles
Browse latest Browse all 18717

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>