如何在CakePHP中插入多个表单数据作为数据库中的新行

如何在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 (

我使用jqueryclone添加更多表单来填充数据。然后,我想将表单的所有数据单独添加到数据库的新行中。数据库表将为.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
                )

        )

)

生成名称如下的表单字段-

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);