【问题标题】:CakePHP 2 Insert Multiple Rows from ArrayCakePHP 2 从数组中插入多行
【发布时间】:2015-06-09 23:50:33
【问题描述】:

如何在 CakePHP 中从数组中插入多行?这是我的 print_r($_POST)

Array ( 
[category] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
    )

[surface_area] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 24
        [3] => 342
        [4] => 235
    )

[tree_area] => Array
    (
        [0] => 252
        [1] => 254
        [2] => 252
        [3] => 635
        [4] => 457
    )

[no_of_tree] => Array
    (
        [0] => 457
        [1] => 658
        [2] => 3563
        [3] => 6357
        [4] => 363
    )

)

我曾尝试使用 foreach 和 for 循环,但无法正常工作。任何的想法? 谢谢

【问题讨论】:

    标签: php arrays cakephp cakephp-2.0


    【解决方案1】:

    如果你想保存数组的内容

    你可以这样做

    $data=$this->request->data;
    saveAll($data, array('deep' => true)); 
    

    【讨论】:

      【解决方案2】:

      我尝试使用 for 循环,但它必须以 0 偏移量开始。如何保持简单?

      for($i = 0; $i < count($this->request->data['category']); $i++) { 
      
                  $this->Model->create();
                  $data[0] = array(
                      'project_id' => $id, 
                      'criteria_form_list_id' => $category[0]['category'], 
                      'surface_area' => $surface_area[0]['surface_area'], 
                      'cover_by_tree' => $tree_area[0]['tree_area'], 
                      'no_of_tree' => $no_of_tree[0]['no_of_tree']
                  );
                  $data[$i] = array(
                      'project_id' => $id, 
                      'criteria_form_list_id' => $category[$i]['category'], 
                      'surface_area' => $surface_area[$i]['surface_area'], 
                      'cover_by_tree' => $tree_area[$i]['tree_area'], 
                      'no_of_tree' => $no_of_tree[$i]['no_of_tree']
                  );
      
                  $this->Model->save($data); 
              } 
      

      【讨论】:

        【解决方案3】:

        您需要按照以下格式排列数据

        $dataToSave=数组(

         [0]=>array(
        
            [ModelName]=>array(
                    field1=>value1,
                    field2=>value2
                )
            )
        [1]=>array(
        
            [ModelName]=>array(
                    field1=>value3,
                    field2=>value4
                )
            )
        [2]=>array(
        
            [ModelName]=>array(
                    field1=>value5,
                    field2=>value6
                )
            )
        [3]=>array(
        
            [ModelName]=>array(
                    field1=>value7,
                    field2=>value8
                )
            )
        

        )

        之后在保存数据时使用

        $this->ModelName->saveall($dataToSave);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-09-17
          • 2012-01-24
          • 1970-01-01
          • 2013-09-10
          • 2020-04-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多