public function StrategyAddAction()
{
//$trans=M();
//$trans->startTrans();
$strdata=$_POST["data"];
$strategy_Adpter=M("TStrategyMain");
$strategy_Adpter->startTrans();
$strategy_Adpter->create();
$strategydetail_Adpter=M("TStrategyDetail");
$strategy_Adpter->name=$strdata["srcsn"];
$strategy_Adpter->eqsn=$strdata["srcsn"];
$strategy_Adpter->smartmac=$strdata["srcsn"];
$strategy_Adpter->eventcode=$strdata["srceventid"];
$lastmainid=$strategy_Adpter->add();
//$strategy_Adpter->rollback();
$lastdetailid=true;
if($lastmainid!=false){
foreach ($strdata["destlist"] as $eq) {
if($lastdetailid==false){
break;
}
foreach ($eq["eventArray"] as $event) {
$strategydetail_Adpter->create();
$strategydetail_Adpter->mainid=22222;//$lastmainid;外键插入失败
$strategydetail_Adpter->eqsn=$eq["sn"];
$strategydetail_Adpter->smartmac=$eq["mac"];
$strategydetail_Adpter->eventcode=$event["id"];
$lastdetailid=$strategydetail_Adpter->add();
if($lastdetailid==false){
break;
}
}
}
}
if (($lastdetailid&&$lastmainid)!=false){
$strategy_Adpter->commit();
$resultArr=array("state"=>true,"message"=>"ok");
}else{
$strategy_Adpter->rollback();
$resultArr=array("state"=>false,"message"=>"failure");
}
}
数据库CREATE TABLE `t_strategy_main` (
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
回头来搞这个项目。每次主表保存完,数据库里就有数据了,之后的Detail 保存失败回滚不起效。
TP版本是3.2.3 php 5.6.23 mysql Ver 14.14 Distrib 5.7.13
最佳答案
