在cakephp的for循环中多次保存

时间:2017-01-27 06:54:25

标签: php cakephp

我正在使用2个数据库。我从一个数据库中获取来自多个表的特定id的数据,并将其保存在另一个数据库中。当我这样做时,需要for循环的数据会多次返回相同的数据,而不是不同的数据。请帮我纠正错误。以下是代码:

 $q5 = $this->Model->function($empcode[$j]);
                if (!empty($q5)) {
                    for ($i = 0; $i < count($q5); $i++) {
                    $name = $q5[0][0]['tf_rel_fname'] . ' ' . $q5[0]   [0]['tf_rel_mname'] . ' ' . $q5[0][0]['tf_rel_lname'];
                    $data5 = array('emp_cd' => $empcode[$j],
                        'ppo_number' => $empcode[$j],
                        'family_member_name' => $name,
                        'relationship' => $q5[0][0]['tf_rel_cd'],
                        'is_family_pensioner' => 'N',
                        'dob' => date('Y-m-d', strtotime($q5[0][0]['tf_rel_dob'])),
                        'disability_percentage' => $q5[0][0]['ph_disab_per'],
                        'physically_handicapped' => $q5[0][0]['ph_cd'],
                    );

                    $this->ppmfamily_details->create(false);
                    $this->ppmfamily_details->save($data5);
                    }

                }

此处计数为3.而不是将结果作为a,b,c给出,它返回a,a,a。

2 个答案:

答案 0 :(得分:0)

在循环中保存数据时,您需要调用

$this->YourModel->clear();

每次保存后

$q5 = $this->Model->function($empcode[$j]);
  if (!empty($q5)) {
    for ($i = 0; $i < count($q5); $i++) {
      $name = $q5[0][0]['tf_rel_fname'] . ' ' . $q5[0][0]['tf_rel_mname'] . ' ' . $q5[0][0]['tf_rel_lname'];
      $data5 = array('emp_cd' => $empcode[$j],
        'ppo_number' => $empcode[$j],
        'family_member_name' => $name,
        'relationship' => $q5[0][0]['tf_rel_cd'],
        'is_family_pensioner' => 'N',
        'dob' => date('Y-m-d', strtotime($q5[0][0]['tf_rel_dob'])),
        'disability_percentage' => $q5[0][0]['ph_disab_per'],
        'physically_handicapped' => $q5[0][0]['ph_cd'],
      );
      $this->ppmfamily_details->clear();
      $this->ppmfamily_details->create(false);
      $this->ppmfamily_details->save($data5);
    }
  }

以下是更多信息:https://book.cakephp.org/2.0/en/models/saving-your-data.html#model-save-array-data-null-boolean-validate-true-array-fieldlist-array

请特别注意有关在循环中保存数据的信息框。

答案 1 :(得分:0)

saveMany在这里应该会有所帮助。

示例:

$data = array(
array('title' => 'title 1', 'Assoc' => array('field' => 'value')),
array('title' => 'title 2'),
);
$data = array(
array(
    'Article' => array('title' => 'title 1'),
    'Assoc' => array('field' => 'value')
),
array('Article' => array('title' => 'title 2')),
);
$Model->saveMany($data, array('deep' => true));