假设我有两个数据库表。一个用于表单,另一个用于Fields:
形式:
ID(pk),user_id,name,description
字段:
ID(pk),form_id(fk),name,description
父“表单”表单还有子表“字段”表的输入表单字段,如fields.name
和fields.description
。
我需要的是:每当我将值放到表单时,它会将所有字段保存到相应的属性,包括子“字段”表单输入。就像Form表格将存储自己的字段一样,和字段将存储自己的字段。
那么如何使这项工作?我认为应该使用“拯救儿童模特”吗?但不知道如何使用保存儿童模型,因为我是Yii的新手。
请帮帮我。
答案 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
}
}