我有一个表单,可以节省一个人的许多部分和颜色,但它不会保存部件和颜色;只保存人(主模型)。
在我的列表查看,脚本的一部分:
echo $this->Form->input('Person.person_name', array('required' => true, 'placeholder' => 'Name Your Person', 'label' => false) );
echo $this->Form->input('Part.0.part_name', array('required' => true, 'placeholder' => 'Add Part', 'label' => false) );
echo $this->Form->input('Color.0.color_name', array('required' => true, 'placeholder' => 'Enter a Color', 'label' => false) );
在我的列表控制器上:
if ($this->request->is('post')) {
$created = $this->Person->saveAll($this->request->data, array('validate'=>'first'));
if (!empty($created)) {
$this->Session->setFlash(__('The person and his/her parts and colors have been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The person could not be saved. Please, try again.'));
}
}
在我的人物模型:
上public $hasMany = array(
'PersonParts' => array(
'className' => 'Part',
'foreignKey' => 'part_person_id'
),
'PersonColors' => array(
'className' => 'Color',
'foreignKey' => 'color_person_id'
)
);
尝试用saveAssociated替换saveAll,但它是一样的。 我在这做错了什么?非常感谢任何帮助。
答案 0 :(得分:3)
您必须在表单中添加别名的原始名称(如hasMany
变量中的别名):
echo $this->Form->input('Person.person_name');
echo $this->Form->input('PersonParts.0.part_name');
echo $this->Form->input('PersonColors.0.color_name');
答案 1 :(得分:1)
将表单更新为
echo $this->Form->input('Part.part_name',...)
echo $this->Form->input('Color.color_name',...)
在您的控制器中,使用
**saveAssociated**
答案 2 :(得分:1)
试试这个
echo $this->Form->input('Person.person_name', array('required' => true, 'placeholder' => 'Name Your Person', 'label' => false) );
echo $this->Form->input('PersonParts.0.part_name', array('required' => true, 'placeholder' => 'Add Part', 'label' => false) );
echo $this->Form->input('PersonColors.0.color_name', array('required' => true, 'placeholder' => 'Enter a Color', 'label' => false) );
答案 3 :(得分:0)
我认为您需要独立保存所有内容。
您如何看待这种可能性?
如果是,则通过。
$this->Person->Part->save();
$this->Person->Color->save();
答案 4 :(得分:0)
要保存,您可以使用以下内容:
$this->Model->saveMany($data, array('deep'=>TRUE));
请注意,“深度”选项需要CakePHP 2.1。没有它,相关的评论记录将不会被保存。
所有这些都记录在http://book.cakephp.org/2.0/en/models/saving-your-data.html
中同样纠正
echo $this->Form->input('Person.person_name', array('required' => true, 'placeholder' => 'Name Your Person', 'label' => false) );
echo $this->Form->input('Part.part_name', array('required' => true, 'placeholder' => 'Add Part', 'label' => false) );
echo $this->Form->input('Color.color_name', array('required' => true, 'placeholder' => 'Enter a Color', 'label' => false) );