在Yii中保存子模型()

时间:2011-03-14 10:13:47

标签: yii

假设我有两个数据库表。一个用于表单,另一个用于Fields:

形式:
ID(pk),user_id,name,description

字段:
ID(pk),form_id(fk),name,description

父“表单”表单还有子表“字段”表的输入表单字段,如fields.namefields.description

我需要的是:每当我将值放到表单时,它会将所有字段保存到相应的属性,包括子“字段”表单输入。就像Form表格将存储自己的字段一样,字段将存储自己的字段。

那么如何使这项工作?我认为应该使用“拯救儿童模特”吗?但不知道如何使用保存儿童模型,因为我是Yii的新手。

请帮帮我。

3 个答案:

答案 0 :(得分:1)

您可以通过循环所有孩子来保存孩子并保存(如果孩子多于一个孩子)。例如,提交给控制器的$ _POST值可以将其设置为如此

$_POST['con']['user_id'] = 1
$_POST['con']['name']='Andrew'
$_POST['con']['child'][1]['name'] = 'Some child1'
$_POST['con']['child'][1]['description']='some description'
etc...

然后您可以使用此

获取这些帖子值

$model->attributes = $_POST['con'];
$model->save();
foreach($model->children as $key=>$child){
$child->attributes = $_POST['con']['child'][$key];
$child->save();
}

注意,这只是概念,希望这可以帮到你。

答案 1 :(得分:0)

请参阅Yii Ultimate Guide中的表格输入:

http://www.yiiframework.com/doc/guide/1.1/en/form.table

(我根本没有在Yii文档中看到saveChildModel()...)

答案 2 :(得分:0)

试试这个

if(isset($_POST['form'] && isset($_POST['fields']){
  $forms->attributes =$_POST['form']
  $fields->attributes =$_POST['fields']

  $valid=$forms->validate();
  $valid=$valid && $fields->validate();  
  if($valid){
          $forms->save(false); //to cancel validation
          $fields->save(false); //to cancel validation
     }
}