首页 文章

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

提问于
浏览
3

我使用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
                )

        )

)

3 回答

  • 3
    $this->Book->saveAll($this->request->data);
    

    要么

    $this->Book->saveAll($this->request->data, array('deep' => true));
    
  • 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() 将正确使用它们 .

  • 2

    你必须将你的数据保存为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];
       }
    

    然后只需在Book模型中调用saveAll即可

    $this->saveAll($data);
    

    假设您的数据以上面提供的格式到达

相关问题