保存内循环

时间:2010-01-08 00:41:53

标签: php cakephp

我创建了一个具有无限循环和最后延迟的函数,以确保它每秒只执行一次。

此函数位于shell类中,其目标是在三个不同的表中保存/更新记录,并使用命令'cake className'从控制台行调用它

我的问题是:

我在控制台停止循环(Ctrl + C),只有最后一条记录保存在数据库中。

我不知道事务是否存在问题,我尝试在保存和提交之后使用begin(),但问题依旧存在。

代码是这样的:

$this->T1->begin();
$this->T2->begin();
$this->T3->begin();

 if ($this->T1->save((array (
    'Field1' => $val1,
    'Field2' => $val2,
    'Field3' => $val3))) 
    && $this->T2->save(array (
      'Field1' => $val4,
      'Field2' => $val5,
      'Field3' => $val6))) 
    && $this->T3->saveField('Field1', $val7)) 
 {
      $this->T1->commit();
      $this->T2->commit();
      $this->T3->commit();

      echo 'success message';
 }

1 个答案:

答案 0 :(得分:3)

这可能是因为在每个模型中仍然存在id,这通常在保存在循环中时发生,因为数据被合并。

请尝试以下方法重置模型,使其不会加载到以前的数据中。

$this->Sale->create(false);
$this->Bidagent->create(false);
$this->Licitation->create(false);

从你的代码片段中虽然我不确定T1,T2和T3是什么......如果它们是模型,那么它们需要相同的$this->Model->create(false);

参考: