in MedicController.php
<?php
class MedicController extends Controller
{
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate()
{
$form = new CForm('application.views.medic.createForm');
$form['user1']->model = new User1();
$form['post1']->model = new Post1();
$form['post2']->model = new Post2();
if($form->submitted('register'))
{
$user1 = $form['user1']->model;
$post1 = $form['post1']->model;
$post2 = $form['post2']->model;
if($user1->save(false))
{
$post1->user_id = $user1->id;
$post1->save(false);
$post2->user_id = $user1->id;
$post2->save(false);
$this->redirect(array('site/index'));
}
}
$this->render('create', array('form'=>$form));
}
}
In Post1.php
<?php
/**
* This is the model class for table "tbl_post1".
*
* The followings are the available columns in table 'tbl_post1':
* @property integer $id
* @property integer $attribute1
* @property integer $attribute2
* @property integer $user_id
*
* The followings are the available model relations:
* @property User1 $user
*/
class Post1 extends CActiveRecord
{
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return Post1 the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'tbl_post1';
}
/**
* @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('user_id', 'required'),
array('attribute1, attribute2, user_id', 'numerical', 'integerOnly'=>true),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id, attribute1, attribute2, user_id', '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(
'user' => array(self::BELONGS_TO, 'User1', 'user_id'),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id' => 'ID',
'attribute1' => 'Attribute1',
'attribute2' => 'Attribute2',
'user_id' => 'User',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('attribute1',$this->attribute1);
$criteria->compare('attribute2',$this->attribute2);
$criteria->compare('user_id',$this->user_id);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
}
in User1.php
<?php
/**
* This is the model class for table "tbl_user1".
*
* The followings are the available columns in table 'tbl_user1':
* @property integer $id
* @property string $username
*
* The followings are the available model relations:
* @property Post1[] $post1s
* @property Post2[] $post2s
*/
class User1 extends CActiveRecord
{
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return User1 the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'tbl_user1';
}
/**
* @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('username', 'required'),
array('username', 'length', 'max'=>128),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id, username', '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(
'post1s' => array(self::HAS_MANY, 'Post1', 'user_id'),
'post2s' => array(self::HAS_MANY, 'Post2', 'user_id'),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id' => 'ID',
'username' => 'Username',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('username',$this->username,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
public function getGenderOptions()
{
return array(
0 => 'Male',
1 => 'Female',
);
}
}
In createForm.php
<?php
return array(
'elements'=>array(
'user1'=>array(
'type'=>'form',
'title'=>'User Record',
'elements'=>array(
'username'=>array(
'type'=>'text',
),
),
),
'post1'=>array(
'type'=>'form',
'title'=>'Post1',
'elements'=>array(
'attribute1'=>array(
'type'=>'dropdownlist',
'items'=>User1::model()->getGenderOptions(),
'prompt'=>'Please select:',
),
'attribute2'=>array(
'type'=>'dropdownlist',
'items'=>User1::model()->getGenderOptions(),
'prompt'=>'Please select:',
),
),
),
'post2'=>array(
'type'=>'form',
'title'=>'Post2',
'elements'=>array(
'attribute3'=>array(
'type'=>'dropdownlist',
'items'=>User1::model()->getGenderOptions(),
'prompt'=>'Please select:',
),
'attribute4'=>array(
'type'=>'dropdownlist',
'items'=>User1::model()->getGenderOptions(),
'prompt'=>'Please select:',
),
),
),
),
'buttons'=>array(
'register'=>array(
'type'=>'submit',
'label'=>'Register',
),
),
);
In create.php
<h1>Register</h1>
<div class="form">
<?php echo $form; ?>
</div>
after hit the submit button I got
Property "Post1.user_id" is not defined. Is this a bug?
Somebody please help me.
I found it ,there is a typos in my table (column name = $user_id).
My bad.
Thanks everyone.
SOLVED