如下面的一段代码
// 启动事务
$db =Db::connect(session('connect_arr'));
$db ->startTrans();
try {
$ret0 = $db ->table('m_gonggao') ->strict(false) ->update($data);
if ($ret0 > 0) {
$ret1 = $db ->table('m_gonggaomx') ->where('gonggaoid',$data['id']) ->delete();
//dump($db ->getLastSql());die;
if ($ret1>0){
// 提交事务
$db ->commit();
return true;
}else{
// 回滚事务
$db ->rollback();
return false;
}
}else{
// 回滚事务
Db::rollback();
return false;
}
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return false;
}
2个表m_gonggao 中的id 和 m_gonggaomx gonggaoid 是一个关联值,执行第一个数据库操作,OK,执行第二个数据库操作返回的是0,
正常是不应该的,数据库表 m_gonggaomx 中确实有值,为0确实也做了回滚操作。后来打印出执行的sql语句,第二个数据库操作:
DELETE FROM [m_gonggaomx] FROM [m_gonggaomx] WHERE [id] = 67 AND [gonggaoid] = 67
郁闷啊。折腾了好久,不知道什么原因。请各位前辈帮助。求解!!!!!!!