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
modelo E/R: