bnas todos, tengo el siguiente problema que no he entendido como resolverlo.
tngo en mi accion create un guardado a diferentes modelos.
esta es la relacion.
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:
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:
[/php]
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

modelo E/R:
