$c=M('customer');
$result=$c->add($data);
$o=M('order');
$result2=$o->add($data2);
$c->startTrans();//在第一个模型里启用就可以了,或者第二个$o也行
if($result && $result2){
$c->commit();//成功则提交哦啊
//问题在这里,这里写不写$o->commit();不写的话是根据上面$c->startTrans();这里写的是$c的原因吗
}else{
$c->rollback();//不成功,回滚
//问题在这里,这里写不写$o->rollback();
}
折叠我吧,我揣摩了半天也没能看懂
仔细去学习这个类文件,弄明白了M、D、Model等一些列机制,你就明白了,
结果是:
事务跟你实例化是的表没有关系
这里你可以使用
$c->startTrans();
...
$c->commit();
也可以使用
$o->startTrans();
...
$o->commit();
只要保持一致就ok
参照 http://www.thinkphp.cn/topic/4182.html http://www.thinkphp.cn/topic/22146.html
注意数据库引擎是否是 innodb
试下这样:
php
$c=M('customer'); $c->startTrans(); $result=$c->add($data); if($result){ $c->commit(); }else{ $c->rollback(); }