如何在CakePHP中插入多个表单数据作为数据库中的新行
我使用jqueryclone添加更多表单来填充数据。然后,我想将表单的所有数据单独添加到数据库的新行中。数据库表将为.ex。根据我的阵列如何在CakePHP中插入多个表单数据作为数据库中的新行,php,mysql,cakephp,Php,Mysql,Cakephp,我使用jqueryclone添加更多表单来填充数据。然后,我想将表单的所有数据单独添加到数据库的新行中。数据库表将为.ex。根据我的阵列 name | author | category ABC 2 1 XYZ 2 1 PQR 5 2 我的阵列 Array ( [Book] => Array ( [name] => Array (
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
)
)
)
生成名称如下的表单字段-
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()
将与它们正常工作
$this->Book->saveAll($this->request->data);
或
您必须将您的数据放在像这样的saveAll兼容格式中
array(
'Book' => array(
0 => array(
'name' => 'xxx',
'author' => 'yyy',
),
1 => array(
'name' => 'aaa',
'author' => 'bbb',
)
)
)
您可以通过传输jquery克隆传递的数据来实现这一点。像这样的。注:未经测试
$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];
}
假设您的数据以上述格式到达
$form\u data=$this->request->data$这->书->保存许多($form\u data)//$此->书本->全部保存($form\u data)代码>我认为代码需要一些循环代码。但我不知道。编辑你的问题,把你试过的代码放在那里。然后你就有更好的机会有人回答。在这里添加你的视图文件代码,因为你没有从表单中获取数据
编辑你的问题,而不是添加为注释我正在使用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];
}
$this->saveAll($data);