我使用Jquery Clone添加更多表单来填充数据。然后我想在一个新的数据库行中单独添加表单的所有数据。数据库表将是.ex。根据我的阵列。
name | author | category
ABC 2 1
XYZ 2 1
PQR 5 2
我的数组
Array
(
[Book] => Array
(
[name] => Array
(
[0] => ABC
[1] => XYZ
[2] => PQR
)
[author] => Array
(
[0] => 2
[1] => 2
[2] => 5
)
[category] => Array
(
[0] => 1
[1] => 1
[2] => 2
)
)
)
答案 0 :(得分:3)
生成名称为 -
的表单字段echo $this->Form->input('Book.0.name');
echo $this->Form->input('Book.1.name');
echo $this->Form->input('Book.0.author');
echo $this->Form->input('Book.1.author');
然后你会得到像 -
这样的数据array(
'Book' => array(
0 => array(
'name' => 'xxx',
'author' => 'yyy',
),
1 => array(
'name' => 'aaa',
'author' => 'bbb',
)
)
)
然后saveMany()
将正确使用它们。
答案 1 :(得分:3)
您必须将数据保存为saveAll兼容格式,如此
array(
'Book' => array(
0 => array(
'name' => 'xxx',
'author' => 'yyy',
),
1 => array(
'name' => 'aaa',
'author' => 'bbb',
)
)
)
你可以通过改变你的jquery clone传递的数据来做到这一点。这样的事情。注意:未经测试
$data = array();
$names = Hash::extract($jquerycloneData,'Book.name');//array(ABC,XYZ,PQR);
$authors = Hash::extract($jquerycloneData,'Book.author');
$categories = Hash::extract($jquerycloneData,'Book.category');
$i=0;
for($i, $i<count($names) ,$i++){
$data['Book'][$i]['name'] = $names[$i];
$data['Book'][$i]['author'] = $authors[$i];
$data['Book'][$i]['category'] = $categories[$i];
}
然后只需在您的图书模型中调用saveAll
$this->saveAll($data);
假设您的数据以上面提供的格式到达
答案 2 :(得分:2)
$this->Book->saveAll($this->request->data);
或
$this->Book->saveAll($this->request->data, array('deep' => true));