我创建了一个具有无限循环和最后延迟的函数,以确保它每秒只执行一次。
此函数位于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';
}
答案 0 :(得分:3)
这可能是因为在每个模型中仍然存在id,这通常在保存在循环中时发生,因为数据被合并。
请尝试以下方法重置模型,使其不会加载到以前的数据中。
$this->Sale->create(false);
$this->Bidagent->create(false);
$this->Licitation->create(false);
从你的代码片段中虽然我不确定T1,T2和T3是什么......如果它们是模型,那么它们需要相同的$this->Model->create(false)
;
参考: