Tengo un formulario que trabaja con 2 modelos diferentes, en este caso serian solicitantes con los campos cedula, nombres, apellidos, direccion, telefono, fecha de nacimiento y solicitudes_sociales con los campos tipo de solicitus, fecha y descripcion, el problema se me presenta cuando registro todo el formulario ejemplo los datos de solicitante cedula=19956004, nombre= miguel apellido= lopez direccion=xxx, etc… y los datos de solicitudes tipo de solicitud= solicitud de salud fecha=hoy descripcion= solicitud de ayuda para donacion de sillas de ruedas. Luego de la explicación presento el problema que es le siguiente cuando una persona se presenta mas de 1 vez a realizar 1 solicitud se registra 2 veces la misma persona en la tabla solicitantes por supuesto con una solicitud diferente, que solución me proponen para resolver mi problema, de antemano muchas gracias.
aqui el codigo del formulario
<?php
/* @var $this SolicitudesSocialController */
/* @var $model SolicitudesSocial */
/* @var $form CActiveForm */
?>
<div class="form">
<?php
$form=$this->beginWidget('CActiveForm', array(
'id'=>'solicitudes-social-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false,
));
if ($a->isNewRecord==false) {$b=Solicitantes::model()->findByPk($a->solicitantes_id); }
echo $form->errorSummary(array($a,$<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' />);
?>
<p class="note">Campos con <span class="required">*</span> son Obligatorios.</p>
<div class="row">
<?php echo $form->labelEx($b,'cedula'); ?>
<?php echo $form->textField($b,'cedula',array('size'=>12,'maxlength'=>12));?>
<?php echo $form->error($b,'cedula'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'nombre'); ?>
<?php echo $form->textField($b,'nombre',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($b,'nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'apellido'); ?>
<?php echo $form->textField($b,'apellido',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($b,'apellido'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'nacimiento'); ?>
<?php echo $form->textField($b,'nacimiento'); ?>
<?php echo $form->error($b,'nacimiento'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'edad'); ?>
<?php echo $form->textField($b,'edad'); ?>
<?php echo $form->error($b,'edad'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'sexo'); ?>
<?php echo $form->textField($b,'sexo'); ?>
<?php echo $form->error($b,'sexo'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'direccion'); ?>
<?php echo $form->textField($b,'direccion',array('size'=>60,'maxlength'=>255)); ?>
<?php echo $form->error($b,'direccion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'numero de casa'); ?>
<?php echo $form->textField($b,'numerocasa',array('size'=>15,'maxlength'=>15)); ?>
<?php echo $form->error($b,'numerocasa'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'telefono'); ?>
<?php echo $form->textArea($b,'telefono',array('rows'=>6, 'cols'=>50)); ?>
<?php echo $form->error($b,'telefono'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'email'); ?>
<?php echo $form->textField($b,'email',array('size'=>60,'maxlength'=>255)); ?>
<?php echo $form->error($b,'email'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'circuitos_id'); ?>
<?php echo $form->dropDownList($b,'circuitos_id', CHtml::listData(Circuitos::model()->findAll(), 'id', 'nombre'),array('empty'=>'Seleccione un circuito')); ?>
<?php echo $form->error($b,'circuitos_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($a,'tipo_solicitudes_id'); ?>
<?php echo $form->textField($a,'tipo_solicitudes_id',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($a,'tipo_solicitudes_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($a,'departamentos_id'); ?>
<?php echo $form->textField($a,'departamentos_id',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($a,'departamentos_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($a,'solicitantes_id'); ?>
<?php echo $form->textField($a,'solicitantes_id',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($a,'solicitantes_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($a,'fecha'); ?>
<?php echo $form->textField($a,'fecha'); ?>
<?php echo $form->error($a,'fecha'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'usuarios'); ?>
<?php echo $form->textField($b,'usuarios_id'); ?>
<?php echo $form->error($b,'usuarios_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($a,'descripcion'); ?>
<?php echo $form->textArea($a,'descripcion',array('rows'=>6, 'cols'=>50)); ?>
<?php echo $form->error($a,'descripcion'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($a->isNewRecord ? 'Crear' : 'Guardar'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
aqui el codigo del modelo de solicitudes sociales
<?php
/**
* This is the model class for table "solicitudes_social".
*
* The followings are the available columns in table 'solicitudes_social':
* @property string $id
* @property string $tipo_solicitudes_id
* @property string $departamentos_id
* @property string $solicitantes_id
* @property string $fecha
* @property string $descripcion
*/
class SolicitudesSocial extends CActiveRecord
{
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'solicitudes_social';
}
/**
* @return string este pedazo lo puso miguel
*/
public function primaryKey()
{
return 'id';
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('tipo_solicitudes_id, departamentos_id, solicitantes_id, fecha, descripcion', 'required'),
array('tipo_solicitudes_id, departamentos_id, solicitantes_id', 'length', 'max'=>100),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('id, tipo_solicitudes_id, departamentos_id, solicitantes_id, fecha, descripcion', 'safe', 'on'=>'search'),
);
}
/**
* @return array relational rules.
*/
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(
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id' => 'ID',
'tipo_solicitudes_id' => 'Tipo Solicitudes',
'departamentos_id' => 'Departamentos',
'solicitantes_id' => 'Solicitantes',
'fecha' => 'Fecha',
'descripcion' => 'Descripcion',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
*
* Typical usecase:
* - Initialize the model fields with values from filter form.
* - Execute this method to get CActiveDataProvider instance which will filter
* models according to data in model fields.
* - Pass data provider to CGridView, CListView or any similar widget.
*
* @return CActiveDataProvider the data provider that can return the models
* based on the search/filter conditions.
*/
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id,true);
$criteria->compare('tipo_solicitudes_id',$this->tipo_solicitudes_id,true);
$criteria->compare('departamentos_id',$this->departamentos_id,true);
$criteria->compare('solicitantes_id',$this->solicitantes_id,true);
$criteria->compare('fecha',$this->fecha,true);
$criteria->compare('descripcion',$this->descripcion,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
/**
* Returns the static model of the specified AR class.
* Please note that you should have this exact method in all your CActiveRecord descendants!
* @param string $className active record class name.
* @return SolicitudesSocial the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
}